rusça lang ile sıradanifade

3 Cevap php

Ben regexp ile benim sorunu çözemezsiniz.

Tamam, ben yazarken:

$string = preg_replace("#\[name=([a-zA-Z0-9 .-]+)*]#","$name_start $1 $name_end",$string);

Her şey Rus dili ile durumun dışında, ok.

böylece, i yeniden tipi bu reg-exp deneyin:

$string = preg_replace("#\[name=([a-zA-Z0-9**а-яА-Я** .-]+)*]#","$name_start $1 $name_end",$string);

ancak bu çalışma değil,

i bir fikir biliyorum, sadece yazmak:

$string = preg_replace("#\[name=([a-zA-Z0-9йцукенгшщзхъфывапролджэячсмитьбю .-]+)*]#","$name_start $1 $name_end",$string);

ama bu delilik: D

Bana basit bir varyant verin

3 Cevap

Unicode aralığı deneyin:

'/[\x{0410}-\x{042F}]/u'  // matches a capital cyrillic letter in the range A to Ya

Unicode için / u bayrağı unutmayın.

Senin durumunda:

"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)*]#u"

Lütfen regex YILDIZ gereksiz olduğunu unutmayın. Her şey zaten PLUS tarafından "yenen" olur. Bu aynı yapardı:

"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)]#u"

(PCRE 3.3 beri destekleniyor) ortak unicode komut özelliği için bir test sağlar Cyrillic.

örneğin Kiril ne (latin) rakam ne tüm karakterleri değiştirin:

$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\-]+$/ 

Ben Safari dahil tüm tarayıcılarda test ettik