regexp with russian lang
I can't solve my problem with regexp.
Ok, when i type:
$string = preg_replace("#\[name=([a-zA-Z0-9 .-]+)*]#","$name_start $1 $name_end",$string);
everything is ok, except situation with Russian language.
so, i try to re-type this reg-exp:
$string = preg_replace("#\[name=([a-zA-Z0-9**а-яА-Я** .-]+)*]#","$name_start $1 $name_end",$string);
but this not working,
i know some idea, just write:
$string = preg_replace("#\[name=([a-zA-Z0-9йцукенгшщ开发者_运维问答зхъфывапролджэячсмитьбю .-]+)*]#","$name_start $1 $name_end",$string);
but this is crazy :D
please, give me simple variant
Try a Unicode range:
'/[\x{0410}-\x{042F}]/u' // matches a capital cyrillic letter in the range A to Ya
Don't forget the /u flag for Unicode.
In your case:
"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)*]#u"
Note that the STAR in your regex is redundant. Everything already gets "eaten" by the PLUS. This would do the same:
"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)]#u"
The common unicode script (supported since pcre 3.3) provides a test for the property Cyrillic.
e.g. replace all characters that are neither cyrillic nor (latin) digits:
$string = '1a2b3cйdцeуfкбxюy';
echo preg_replace('/[^0-9\p{Cyrillic}]/u', '*', $string);
You can find the documentation for that feature under http://www.pcre.org/pcre.txt "Unicode character properties".
And you have to specify the PCRE8 flag (u) as described at http://docs.php.net/reference.pcre.pattern.modifiers
This one worked for me:
/^[а-яА-Я\p{Cyrillic}0-9\s\-]+$/
I have tested in all the browsers including Safari
Among the most used alphabet in the internet.
This works since a good while now, I believe since php 5.6.
// Filter Chinese and Japanese HAN
if (preg_match("/\p{Han}+/u", " 余TEST杭丽人广播", $match)){echo "CHINESE, JAPANESE ";}
// Filter Cyrilic
if (preg_match("/\p{Cyrillic}/u", "Күңел радиосы ", $match)){echo "RUSSIAN ";}
// Filter Greek
if (preg_match("/\p{Greek}/u", "Πρακτορείο ", $match)){echo "GREEK ";}
// Filter Arabic
if (preg_match("/\p{Arabic}/u", "مشال راډیو", $match)){echo "ARABIC ";}
// Filter Armenian
if (preg_match("/\p{Armenian}/u", "Ազատություն ", $match)){echo "ARMENIAN ";}
// Filter Thai
if (preg_match("/\p{Thai}/u", "สวท.พะเยา", $match)){echo "THAI ";}
// Filter Georgian
if (preg_match("/\p{Georgian}/u", "რადიო თავისუფალი", $match)){echo "GEORGIAN";}
/* Output: */
/* CHINESE, JAPANESE RUSSIAN GREEK ARABIC ARMENIAN THAI GEORGIAN */
精彩评论