Avatar billede wickedd Juniormester
16. august 2005 - 06:29 Der er 11 kommentarer og
1 løsning

Problemer med ereg_replace

Jeg har et problem med ereg_replace...

Linket ser således ud:
http://blabla.php?highlight=Mydoom

Min ereg_kode ser således ud:
  $highlight = ucfirst ($highlight);
  $row[sigs] = ereg_replace("$highlight","<big><b>$highlight</b></big>",$row[sigs]);

Problemet:
Alt virker fint hvis teksten der skal laves om står som Mydoom eller mydoom, men det virker ikke hvis det er f.eks. MyDoom eller myDoom.
Hvorfor ikke? Og er der evt. noget man kan gøre for at fixe det?

Tak på forhånd.
Avatar billede showsource Seniormester
16. august 2005 - 06:37 #1
Måske
  $highlight = strtolower($highlight);
  $highlight = ucfirst($highlight);

  $row["sigs"] = str_replace($highlight,"<big><b>". $highlight ."</b></big>",$row["sigs"]);
Avatar billede wickedd Juniormester
16. august 2005 - 06:39 #2
Prøver lige
Avatar billede wickedd Juniormester
16. august 2005 - 06:48 #3
Nu gør den slet ikke noget ved det - Så den virkede ikke :)
Avatar billede wickedd Juniormester
16. august 2005 - 06:54 #4
Nå jeg skal afsted på arbejde, kigger forbi igen ved 17-tiden.
Avatar billede showsource Seniormester
16. august 2005 - 06:54 #5
Er det highlight af ord som der er søgt på i DB?
Bruger selv dette:

$string = eregi_replace(rawurldecode($_GET["highlight"]), "<b>". rawurldecode(stripslashes($_GET["highlight"])) ."</b>", $raekke["sigs"]));

echo $string;
Avatar billede wickedd Juniormester
16. august 2005 - 07:44 #6
Jeg er tidlig på den i dag, så jeg kan vist lige nå at tjekke om jeg kan få det til at virke.
Avatar billede wickedd Juniormester
16. august 2005 - 07:50 #7
Virker perfekt - Smid et svar :)
Avatar billede wickedd Juniormester
16. august 2005 - 07:53 #8
Og hvis andre kan bruge det her til noget, så bare husk at fjerne ) i slutningen, ellers får du en parse error.
Avatar billede nielle Nybegynder
16. august 2005 - 08:04 #9
Hvis du bruger denne kode i stedet:

$row[sigs] = preg_replace("/$highlight/i", "<big><b>$highlight</b></big>", $row[sigs]);

- så behøver du ikke at ændre case eller noget. Du kan ismpelthen beholde dine store bogsataver som de blev skrevet.
Avatar billede showsource Seniormester
16. august 2005 - 20:52 #10
Samme kan jo
$row["sigs"] = eregi_replace($highlight,"<big><b>". $highlight ."</b></big>",$row["sigs"]);

omend preg i følge manual er hurtigere
Avatar billede wickedd Juniormester
17. august 2005 - 12:42 #11
Ja jeg blev nød til at lave preg om til eregi, for hver gang man brugte / så kom den med en fejl.
Så istedet for ereg skulle jeg bare ha' brugt eregi fra starten af :)
Ærgeligt jeg glemmer det hver gang.

Takker for hjælpen.
Avatar billede nielle Nybegynder
17. august 2005 - 13:15 #12
Det er fordi at en / skal escapes:

preg_match("/http:\/\/www.eksperten.dk/", $matches)

Performance-mæssigt bør man altid vælge preg-versionerne i stedet for ereg-ditto. Iøvrigt tillader preg-versionerne også flere typer af patterns.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester