preg_replace-el idézőjel és backslash kezelése
Kis preg_replace segítségre lenne szükségm.
Klienstől kapott html adatokból szeretnék szanálni.
Nevezetesen az img tag-ben szereplő-at (és társait) próbálom eltüntetni, de az idézőjel és backslash miatt kicsit elakadtam.
A problémát kicsit nehezíti, hogy mikor a szerveren kiíratom a megfelelő változót, akkor abban extra backslash-ek vannak:Utoljára már ezzel próbálkoztam:A [:punct:],[:digit:] kifejezésekre a szerver hibát dobott (valami POSIX-ot emlegetett benne, nem jegyeztem meg)
■ Klienstől kapott html adatokból szeretnék szanálni.
Nevezetesen az img tag-ben szereplő
width="598"
A problémát kicsit nehezíti, hogy mikor a szerveren kiíratom a megfelelő változót, akkor abban extra backslash-ek vannak:
width="\"598\""
preg_replace('/width=[\\"][\\\\][\\"]([0-9])*[\\\\][\\"][\\"]/', "valami", $content);
Szöveg konstansba mindig
Az agyad pörögjön értelmesebb dolgokon annál mint, hogy kell-e dupla, avagy sem, amikor a dupla mindig működik.
Nos nézzük mit is keresel:
szövegesen
A
width="\"
szöveg, majd egy szám ([0-9]*
vagy, ha nem lehet üres akkor[0-9]+
), majd a\""
szöveg.A minta
/width="\"[0-9]*\""/
A mintában a \ jelenek speciális szerepe van(\w szókarakterek, \d számkarakter stb.), ezért escapelni kell, tehát:
/width="\\"[0-9]*\\""/
Figyeljoad, hogy ez még csak a minta, amit át kell adni a preg_replace-nek. Ezt most beírjuk a PHP-ba, tehát lesz belőle egy szöveg konstans, most jön a fenti szabály (köré tettem az aposztrófot, hogy még világosabb legyen a váltás):
'/width="\\\\"[0-9]*\\\\""/'
és már meg is vagyunk.
pp
Nem működik
Így néz ki a sorom: