PDA

Pogčedajte punu verziju : preg_match koji propusta "srpska" slova


flash_back
16. 11. 2008., 01:51
dali imate ideju kako ovo da se napise.. ja evo guglam vec sat vremena i bez uspeha.. znaci treba mi obican preg_match koji ce da propusti sva slova ukljucujuci i "ČĆĐŠ.."...

mogu da izvedem hack, da ih pre provere pretvorim u obicna ali nije to to :)

bOkIcA
16. 11. 2008., 02:57
zar nije to ono nekako simple?! :1050:


$s = "abcšđč枊ĐČĆŽkdfef";

if (!preg_match("/^[0-9a-zA-Zšđč枊ĐČĆŽ]*$/", $s))
exit("NE.");

echo "da";

Djuki
16. 11. 2008., 12:25
I naravno sam php fajl sačuvati kao utf-8. Zend ima ovu mogućnost. Bokica je u pravu, ne vidim zašto ovo ne bi radilo.

flash_back
16. 11. 2008., 14:54
svaka cast, simple a radi :) hvala

dinke
16. 11. 2008., 17:33
Za utf karaktere treba samo dodati jedan \pL i na kraju posle / i tzv. utf modifier, 'u'.


<?php

$s = "abcšđsdfč枊ĐČĆŽkdfef";

if (!preg_match("/^[a-z\pL]+$/u", $s))
{
echo "ne";
}
else
{
echo "da";
}

?>

Naravno da nije potrebno ubacivati sva nasa slova na listu.

bOkIcA
16. 11. 2008., 18:05
Opet je pitanje sta covek od karaktera hoce da dozvoljava, sa \pL ili "/^[\w\pL]+$/" dozvoljavaju se mnogi (i cudni) karakteri svih jezika a sa npr. \p{Greek} se mogu ograniciti i na samo jedno pismo.

dinke
16. 11. 2008., 19:27
^ Definitivno nece propustati brojeve sto nije slucaj sa regexp-om koji si ti dao :)

bOkIcA
17. 11. 2008., 01:59
Pa nisu trazeni brojevi nego "sva slova ukljucujuci i ČĆĐŠ.." :P

;)

dinke
17. 11. 2008., 09:28
^Tako je to ti i ja kazem, a ako ono 0-9 u tvom regexp-u ne pusta brojeve onda ne znam sta ce :)

Lapsus pretpostavljam ali rekoh da ukazem na propust ;)

Br@nkoR
17. 11. 2008., 09:30
\p{Latin}
\p{Cyrillic}

bOkIcA
17. 11. 2008., 10:22
lapsus :1043: