WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   str_ireplace (https://www.wn.se/forum/showthread.php?t=36990)

robinalexandercox 2009-05-22 21:13

Jag har byggt en sökmotor som letar igenom vissa databastabeller innehållandes html, efter en av användaren vald text sträng. De texter som innehåller strängen ska sedan visas med alla förekomster av strängen i fet stil. Jag gör srängförekomsterna feta på följande sätt:

$belystord = '<span style="font-weight: bold; color: #000;">' . $_GET['word'] . '</span>';
$text_array[$i] = str_ireplace($_GET['word'],$belystord,$text_array[$i]);

Mitt problem är att om användaren söker på t.ex. "a" så byter den ut "a" i länktaggarna vilket gör att de inte längre funkar. Hur gör jag för att str_ireplace ska låta bli att ändra på allt som finns inuti taggar?

allstars 2009-05-22 21:38

tillåt inte att man kunna söka på end en bokstav...

crazzy 2009-05-22 23:32

Använd dej av regexp tillsammans med typ eregi_replace() eller någon annan passande funktion.

"[^\<\/?][A-Za-z]+[^\\?\>]" skulle matcha alla strängar beståendes av bokstäver som inte omsluts av < >, </ > eller < />.

Så typ detta borde funka:
Kod:

$text_array[$i] = eregi_replace("[^\<\/?]".$_GET['word']."[^\\?\>]",$belystord,$text_array);
Jag tror att detta löser ditt problem.

edit: Missade den lilla detaljen med sluttaggarna...


Alla tider är GMT +2. Klockan är nu 00:12.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson