Autor Zpráva
Parsek96
Profil *
Mam dotaz, v nekterych polich kam lide ukladaji pomoci ctrl + c a ctrl + v text treba z Wordu a podobne obcas protece znak, napriklad: ´ snazim se jej vychytit pomoci str_replace, to mi vsak tento znak nenajde, jakoby se v textu nenachazel.

Setkali jste se s necim obdobnym? Jak to resit?
Keeehi
Profil
Parsek96:
A co s těmi znaky chceš udělat? Odstranit? Nejlépe pak tedy pomocí seznamu povolených znaků
$vystup = preg_replace('~[^a-zA-Z0-9]~', '', $vstup);
Toto nechá jen anglickou abecedu a čísla. Není však problém to rozšířit, záleží na požadavcích co nechat a co odstranit.
Alphard
Profil
Tak záleží, jak definujete "určité znaky", nejlepší je white filtr ve stylu http://php.vrana.cz/vytvoreni-pratelskeho-url.php To už mě Keeehi předhonil,

ale ještě chci zmínit, že jestli text smí obsahovat mezery, není dobré je nechávat na okrajích, to je právě nejčastější chybný znak, který se zkopíruje. Takže trim().
Parsek96
Profil *
Ano, v podstate bych chtel, aby bylo mozne posilat dal jen znaky abecedy a cisla, tim by se mela sance nezadnouciho znaku snizit na nulu. Jakym zpusobem bych tam mohl dodat jeste ceske znaky s diakritikou? A pripadne nemecke atd? Staci je jen vyjmenovat? Tj.

$vystup = preg_replace('~[^a-zA-Z0-9áéíó]~', '', $vstup);


Edit: Jeste mi napadaji urcite vyjimky, jako treba pomlcka, &, zavorka ci procento, taktez staci pridat do toho preg replace?
Keeehi
Profil
Parsek96:
Ano, stačí je tam přidat. S písmenky by problém být neměl, ty ostatní znaky problémy dělat mohou. Některé v určitém kontextu můžou mít určitý význam takže se pak musejí escapovat. Například ta pomlčka určuje rozsah znaků takže kdybychom chtěli povolit pomlčku, museli bychom to udělat takto \-. Ovšem dá se to vyřešit i jinak, jako jsem to udělal já. Když se dá na konec, nemá s čím spárovat, takže se bere jako normální znak.
$vystup = preg_replace('~[^a-zA-Z0-9áéíó&()%-]~', '', $vstup);
Parsek96
Profil *
Dekuji mnohokrat za pomoc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0