eregi_replace - forskel fra server til server som er meget wierd!
Jeg sidder lige og fedter lidt med noget eregi_replace. Jeg har en masse ord (læs: en tekst) hvoraf nogle af ordene skal laves om til links. Jeg har et array med de ord som skal linkificeres. Jeg bruger: $story = eregi_replace("$ny[$i]", "<a href=$ny[$i].html>$ny[$i]</a>", $story); og kører på den måde historien igennem for hvert af ordene i arrayet med ord. Hvis jeg kører scriptet på min ene server så kan den kun finde ud af lave linket på det allersidste ord i arrayet. Hvis jeg kører scriptet på min anden server så virker det fint. Den som godt kan kører php 4.3.11, den anden kører 4.3.9. Er der nogen der kender til dette?
Du burde da bare kunne gøre det med str_replace? Og det er ikke så pænt at skrive den slags variabel-opslag inden i din streng - det kan nok godt give problemer. Prøv i første omgang med:
Det lader ikke til at eregi_replace virker med array. Desuden kan jeg heller ikke få det med to backslashes til at virke. Sidst men ikke mindst, så kunne jeg godt tænke mig at den kun replacede strenge som er helt magen til og ikke kun en del af, samt undgå at replace noget som er i et tag. F.eks. skal den ikke replace ht i fil.html - det går jo ikke helt.
ja samt dem der ender på ,.?! - men problemet er bare at disse tegn ikke skal fjernes fra teksten. Jeg prøver med noget nær eregi_replace("^$ny$i]$", <a href=$ny[$i].html>$ny[$i]</a>, $story); men så æder den også min punktummer og kommaer og den slags. Hvordan får jeg dem til at blive?
Tja, jeg er nu mere en PCRE-kinda guy, så jeg foreslår:
$ord = array("hest", "søko", "flaf"); $str = "Her er en hest. Søkoen er en Søko. Sikke noget flaf"; foreach($ord as $o) { $str = preg_replace("/(?<!\w)(".$o.")(?!\w)/i","<a href=\"".$o.".html\">\\1</a>", $str); } var_dump($str);
Det ser meget fornuftigt ud, men hvis du tilføjer hest endnu engang til $ord, så går der kage i den alligevel. Så den blander sig stadigvæk i tags... Jeg forstår den ikke helt, hvad er der / ! og w og /i ???
Det er et forholdsvist avanceret PCRE udtryk. Læs om de forskellige konstruktioner her: http://wiki.tcl.tk/9384
Og hvorfor ville du proppe hest ind to gange? Du skal vel ikke highlighte samme ord mere end én gang? Og det er jo kun fordi, det er præcis det samme ord, at det vil stå for sig selv to gange.
nu fjerner jeg dubletterne, men nogle steder er jeg ude i små sætninger (max 3 ord). Men hvis jeg så replacer et ord som er en del af en sætning f.eks. "flaf er" før jeg replacer "flaf" - så går der ged i den. Så den holder sig ikke helt væk fra tagsne.
Nej, det gør den ikke - det kan ikke laves helt enkelt. Det ville jeg i stedet gør ved at vælge et passende array af ord. Du sagde jo heller ikke, at nogle ord var flere ord :)
Synes godt om
Ny brugerNybegynder
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.