Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak odstranit z řetězce nepovolené znaky

Ahoj,
potřeboval bych poradit, jak z proměnné (string) odstranit všechny nepovolené znaky.
Povolené jsou pouze :
- velká i malá abeceda včetně dikritiky
- čísla
- pomlčka

Zkoušel jsem preg_replace('~[^a-zA-Z0-9-]~', '', $string) ale neporadí si to s českými znaky. Zná prosím někdo odpověď? Děkuji. M.

Předmět Autor Datum
A povolená je pouze česká diakritika nebo libovolná?
Wikan 09.04.2017 19:01
Wikan
Jaká-koli diakritika.
Matouš 09.04.2017 19:15
Matouš
http://stackoverflow.com/questions/2133758/how-do- i-match-accented-characters-with-php-preg
Wikan 09.04.2017 19:25
Wikan
Tak to nevím, jak to řeší můj dotaz :(
Matouš 09.04.2017 19:49
Matouš
Máš tam přece požadovaný regulární výraz.
Wikan 09.04.2017 19:51
Wikan
Regulární výraz tam je, ale pro jakou funkci tam už není. Zkoušel jsem to dát do preg_replace() ale…
Matouš 09.04.2017 19:57
Matouš
preg_replace('/[^\\p{L}0-9-]/u', '', $string);
Wikan 09.04.2017 20:05
Wikan
Výsledek je stejný, NULL $string = "abcřčŠÝÁšžýěš()-/?(:_)!"; $a = preg_replace('/[^\\p{L}0-9-]/u',…
Matouš 09.04.2017 20:26
Matouš
Mně to teda funguje s výsledkem: abcřčŠÝÁšžýěš-
Wikan 09.04.2017 20:29
Wikan
V online testeru php to taky jede ale u mě ne :-( Tak že ti moc děkuji za pomoc. :beer: snad příjdu…
Matouš 09.04.2017 20:45
Matouš
Stačí ji přidat do toho výrazu.
Wikan 09.04.2017 20:46
Wikan
Třeba jen takto? preg_replace('/[^\\p{L}0-9-' ']/u', '', $string);
Matouš 09.04.2017 21:13
Matouš
Jenom tu mezeru, ne žádné uvozovky.
Wikan 09.04.2017 21:20
Wikan
Dík. poslední
Matouš 09.04.2017 22:20
Matouš

Regulární výraz tam je, ale pro jakou funkci tam už není.
Zkoušel jsem to dát do preg_replace() ale výsledek je pouze NULL

$string = "abcřčŠÝÁšžýěš()-/?(:_)!";
$a = preg_replace('/^[\p{L}-]*$/u', '', $string);
var_dump($a); //NULL

Zpět do poradny Odpovědět na původní otázku Nahoru