Je ne peux pas résoudre mon problème avec REGEXP.
OK, lorsque je tape: p>
$string = preg_replace("#\[name=([a-zA-Z0-9йÑÑкенгÑÑзÑ
ÑÑÑвапÑолджÑÑÑÑмиÑÑÐ±Ñ .-]+)*]#","$name_start $1 $name_end",$string);
4 Réponses :
Essayez une plage unicode:
"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)]#u"
C'est mauvais, car c'est illisible! Le code doit être simple et lisible :)
Je pense que vous voulez dire \ x {0401} - \ x {042f} code> pour les mots russes. A code> est en effet le premier caractère de l'alphabet russe, mais pas dans la plage Unicode. Vérifiez la table unicode ici
@Iulian Onofrei, ouais, je vois en effet \ x {0401} code> là, mais ne vois pas la plage \ x {0402} - \ x {0409} code>. Devrait-il alors être [\ x {0401} \ x {0410} - \ x {042f}] code> ou vraiment [\ x {0401} - \ x {042f}] code>? N'hésitez pas à éditer, bien sûr!
@Bartkiers, oui, tu es Wright. J'ai manqué ça. Je pense que la solution correcte est la suivante: [\ x {0430} - \ x {044f} \ x {0451}] code> pour les lettres minuscules et [\ x {0401} \ x {0410} - \ x {042f}] code> pour les lettres majuscules.
Le script Unicode commun (pris en charge depuis PCRE 3.3) fournit un test de la propriété Cyrillic i>.
E.g. Remplacez tous les caractères qui ne sont ni cyrilliques ni chiffres (latin): p> Vous pouvez trouver la documentation de cette fonctionnalité sous
Et vous devez spécifier le drapeau PCRE8 (U) comme décrit à http: //docs.php .net / référence.pcre.pattern.modificateurs p> p>
AFAIK Il n'y a pas de différences (techniques) entre les scripts "communs" et spécifiant les gammes "manuellement". Donc, ce n'est qu'une question de choix. Sauf peut-être que les noms de propriété sont un peu plus auto-documentant.
Celui-ci a fonctionné pour moi: J'ai testé dans tous les navigateurs, y compris Safari P> P>
Parmi les alphabets les plus utilisés sur Internet.
Cela fonctionne depuis un bon moment, je crois depuis PHP 5.6. P>
// 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 */
Veuillez ajouter quelques explications à votre réponse, de sorte que d'autres puissent en apprendre. Autant que je sache, l'OP n'a pas demandé une expression régulière de détecter une langue
C'est le point: aucune explication nécessaire.
Veuillez partager plus de détails, tels que les chaînes d'entrée des échantillons et la sortie attendue correspondant à ces chaînes