Om du ändrar dina patterns ifrån formatet
$patterns[0] = "/varg/";
till
$patterns[0] = "/varg/i";
borde det bli bra.
7 svar · 182 visningar · startad av elvelind
har ett problem med en kodsnutt.
tanken är att den ska hämta en lista med ord från en xml fil. leta igenom en sträng efter dessa och ersätta dem. orden och erstättningssträngarna hämtas in till en array.
if(isset($_POST["textfield"])){
$patterns[0] = "/varg/";
$patterns[1] = "/elvelind/";
$patterns[2] = "/html/";
$replacements[0] = "<a href=\"http://cirkeln.net\">\\0</a>";
$replacements[1] = "<a href=\"http://elendor.com\">\\0</a>";
$replacements[2] = "<acronym title=\"HyperText Markup Language\">HTML</acronym>";
ksort($replacements);
ksort($patterns);
echo preg_replace($patterns, $replacements, $_POST["textfield"]);{
delen där den hämtar från xml filen är borttagen och ersatt med enklare kod bara för att visa hur arrayerna ser ut.
denna kod fungerar utmärkt.. dock är den versalkänslig och hittar inte HTML utan bara html.
för att lösa detta testade jag med eregi_replace istället för preg_replace.. men då funkar det inte att använda arrayer av någon anledning..
hjälp
Om du ändrar dina patterns ifrån formatet
$patterns[0] = "/varg/";
till
$patterns[0] = "/varg/i";
borde det bli bra.
fungerar fortfarande inte alls
Jag glömde säga att du ska använda det med preg_replace().
Fungerar det ändå inte?
fungerar perfekt.. tackar. nu kan jag sova lugnt.
ett litet till problem.. nu matchar den även ord som är innuti andra ord.. dvs både html och ahtml. testa med
$patterns[2] = "/html[^a-zA-Z0-9]/i"; för att stoppa detta.. men det skapar två problem.
1. den matchar inte ahtml men "html." vilkent är rätt. däremot så blir det problem eftersom även punkten ersätts.
2. den hittar inte html om den ligger sist i strängen och alltså inte har något bakom sig.
perfekt. tackar.