[php] string doorzoeken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer op dit moment iets van een hele simpele "zoek" functie in elkaar te knutselen. De situatie is als volgt:

- Er staat 4 lappen tekst in de database, gewoon netjes verspreid over 4 verschillende records :)

nu is het de bedoeling dat als hij 1 van de 4 records weergeeft hij deze lap tekst eerst moet doorzoeken op het voorkomen van een keywoord "X" en als hij deze vind moet deze bold o.i.d. worden. En dat moet bij elk voorkomende hit gebeuren.

Is dit technisch gezien mogelijk in de huidige situatie of moet ik het e.e.a. gaan veranderen ?

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 17-09 19:55
PHP:
1
$text = str_replace($x, "<b>" . $x . "</b>",  $text);


dit zou toch kunnen, hier veranderd die $x (--> het keyword) elke keer door "<b>" . $x . "</b>"

[ Voor 28% gewijzigd door robbert op 22-07-2003 11:35 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 12:54

Bosmonster

*zucht*

Ja is mogelijk... nog meer vragen? :P

Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
Zo kan het ook, dan krijg je de data meteen goed uit de database, is volgens mij sneller dan als je het met php doet.
PHP:
1
2
$query = "select id, REPLACE('" . $x . "',tekst,'<B>" . $x . "</B>') as tekst FROM tabel";
$db->Execute($query);

Acties:
  • 0 Henk 'm!

  • The_Eternal
  • Registratie: Oktober 2001
  • Laatst online: 26-08 16:59
wustenveld schreef op 22 juli 2003 @ 12:06:
Zo kan het ook, dan krijg je de data meteen goed uit de database, is volgens mij sneller dan als je het met php doet.
PHP:
1
2
$query = "select id, REPLACE('" . $x . "',tekst,'<B>" . $x . "</B>') as tekst FROM tabel";
$db->Execute($query);
zelf denk ik eigenlijk dat dat niet echt het geval is, als mysql ook al zegt op hun site, is dat mysql niet echt uitermate veel aandacht besteed aan die functies (zoals replace etc..) waardoor het best wel eens sneller kan zijn in php, of uiteindelijk niet veel uit zal maken :)

mysql moet het netzogoed parsen als php, en php is denk ik toch iets meer geoptimaliseerd voor het parsen van code lijkt me :)

zelf probeer ik iig zoveel mogelijk dingen in php te doen (natuurlijk niet met het zoeken / ordenen / limiteren van data, want daar is mysql natuurlijk nuttig voor :D)

als ik ongelijk heb hoor ik hier graag wat meer van natuurlijk ;)

Uhm... ja


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Los van de efficiëntie, die niet veel zal verschillen (zoals The_Eternal al constateerde), is er natuurlijk ook nog zoiets als het scheiden van taken. Waarom gebruik je PHP? Om een webbased interface aan de gebruiker te presenteren. PHP is dus verantwoordelijk voor het formatteren van gegevens en de presentatie aan de gebruiker. Waarom gebruik je een database server? Om gegevens gestructureerd in op te slaan en efficiënt op te kunnen zoeken.

Volgens dat onderscheid is het niet meer dan netjes dat je de relevante gegevens met een SQL query uit de database haalt en deze met PHP zo formatteert dat je ze aan de gebruiker kunt presenteren. De database server heeft helemaal niets met HTML te maken, dus het is onlogisch om dan een SQL query te schrijven die HTML code oplevert.

Ik kan me voorstellen dat je tegen deze richtlijnen zondigt wanneer je een grote prestatiewinst kunt boeken door bepaalde zaken in de databaseserver af te handelen, maar in dit geval bestaat er wat mij betreft nauwelijks twijfel: uitvoer formatteren doe je vanuit de PHP code.

Acties:
  • 0 Henk 'm!

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 07-07 13:36
Ik doe over het algemeen zoveel mogelijk in m'n mysql query zodat ik zo min mogelijk doe met m'n php. Heb ergens een onderzoek gelezen dat mysql net iets sneller performt dan php dat doet. Vandaar dat ik op die manier te werk ga. Als ik met mysql toch al bezig ben om een zoekwoord op te zoeken in verschillende tabellen kan ik net zo goed het zoekwoord in diezelfde query highlighten en via php uitpoepen.

Weet helaas niet meer waar ik dat onderzoek gelezen heb, zal binnenkort een keer een testje doen met een timer om te zien wat het scheelt.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

't Probleem daarmee is dat je doorgaans een centrale databaseserver hebt die je minder eenvoudig uit kan breiden dan je (en het aantal) webservers. Maar dan heb je wel al een flink grote website, wil je dat als probleem moeten zien trouwens ;)

Je brengt er namelijk de load wel nog centraler mee op de databaseserver.
Pagina: 1