Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Michal Zahradníček 22. 09. 2010, 09:08:26
-
Zdravím,
chcel by som sa opýtať, že či niekto náhodou neriešil odfiltrovanie nealfanumerických znakov v PHP. Chcel by som nájsť nejaké čisté riešenie pre tento problém.
Napr.
Mám reťazec "Jožko má nový bycikel. #*$& Jazdí na ňom každý deň."
A chcel by som nealfa znaky nahradiť medzerami, čiže dostanem: "Jožko má nový bycikel Jazdí na ňom každý deň"
Zatial som dospel iba k riešeniu, že mám v jednej premennej zadefinované všetky alpha numericke znaky aj s dĺžnami a mäkčeňmi a filtrujem pomocou preg_replace. Problém ale môže nastať vtedy ak sa v texte zobrazí nejaké cuzdie slovo(príp. bude stránka v azbuke), tak mi z neho odfiltruje znaky, ktoré nemá zadané.
Ďakujem za pomoc
-
já to řeším takto:
$patterns = array('(\s+)', '([^A-Za-z]+)');
$replacements = array(' ',' ');
$text = preg_replace($patterns, $replacements, $text);
-
No problém je, že mne to odfiltruje aj diakritiku - čo je nežiadúce...
-
http://www.greenend.org.uk/rjk/2002/06/regexp.html
V PCRE podle te tabulky by to melo byt \W - nevim, jestli to v PHP zafunguje, ale mohlo by.
http://www.phpreferencebook.com/tag/pcre/
A podle druheho odkazu by taky melo.
Cili \W jsou vsechny nealfanum znaky - snad to pomuze.
-
Ďakujem za ďalšiu radu, ale toto taktieť odfiltruje aj znaky s diakritikou "ľščťžýá...."
-
No protože v osmibitech není jasný, jaká znaková sada se používá a tak se nepoužívá žádná. Musíš to převíst do unicode a použít modifikátor /u.