webForumDet fria alternativet

använd arrays med eregi_replace

7 svar · 182 visningar · startad av elvelind

elvelindMedlem sedan juli 2002167 inlägg
#1

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 :p

dectgapMedlem sedan sep. 20021 655 inlägg
#2

Om du ändrar dina patterns ifrån formatet

$patterns[0] = "/varg/";

till

$patterns[0] = "/varg/i";

borde det bli bra.

elvelindMedlem sedan juli 2002167 inlägg
#3

fungerar fortfarande inte alls

dectgapMedlem sedan sep. 20021 655 inlägg
#4

Jag glömde säga att du ska använda det med preg_replace().
Fungerar det ändå inte?

elvelindMedlem sedan juli 2002167 inlägg
#5

fungerar perfekt.. tackar. nu kan jag sova lugnt.

elvelindMedlem sedan juli 2002167 inlägg
#6

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.

MatteMedlem sedan aug. 20002 975 inlägg
#7

Testa det här:

$patterns[2] = "/\bhtml\b/i";
elvelindMedlem sedan juli 2002167 inlägg
#8

perfekt. tackar.

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)