我有这样的判决:
'/gr[aàâ]ce[\s]{1,5}au?[\s]{1,5}docteur[\s\S]{1,100}sans[\s\S]{1,100}(?:faire de|recevoir de) vaccin/igm';它不能正常工作,请参见以下代码:
$text = "Grâce a docteur markus j ai reçu mon pass vaccinal sans toute fois recevoir de vaccin";
$regex = '/gr[aâà]ce[\s]{1,5}au?[\s]{1,5}docteur[\s\S]{1,100}sans[\s\S]{1,100}(?:faire de|recevoir de) vaccin/im';
if(preg_match_all($regex, $text)){
echo "catch";
}我使用它编写了regex,它运行良好,直到我将regex添加到我的脚本中。https://regex101.com/r/EmebOT/1
如果我将regex中的a-替换为“-”,使regex看起来像这样,它就会工作:
'/grâce[\s]{1,5}au?[\s]{1,5}docteur[\s\S]{1,100}sans[\s\S]{1,100}(?:faire de|recevoir de) vaccin/igm'发布于 2022-02-23 06:28:34
我在使用u修饰符时做到了这一点。老实说,他并没有解析很多UTF-8角色,也不知道这件事。
我在PHP 7和8中使用了这段代码:
<?php
$text = "Grâce a docteur markus j ai reçu mon pass vaccinal sans toute fois recevoir de vaccin il sont authentiques avec un \"QR Code\" contenant les informations essentielles, ainsi qu'une signature numérique pour assurer l'authenticité du certificat Covid je sui nouveau dans se groupe alors pour ceux qui sont intéressé me laisse un message en privé je vous explique ou alors voici le lien télégramme du docteur markus pas d insulte s il vous plait tes pas intéressé tu ignores ensemble disons non au vaccin forcé : https://t.me/docteur_markus";
$regex1 = "/gr[aàâ]ce[\s]{1,5}au?[\s]{1,5}docteur[\s\S]{1,100}sans[\s\S]{1,100}(?:faire de|recevoir de) vaccin/iu";
$result = preg_match_all($regex1, $text, $m);
var_dump([$result, $m]);u (PCRE_UTF8)这个修饰符打开了与Perl不兼容的PCRE的附加功能。模式和主题字符串被视为UTF-8.无效的主题将导致preg_*函数不匹配;无效的模式将触发级别E_WARNING的错误。五个和六个八进制UTF-8序列被认为是无效的.
https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
https://stackoverflow.com/questions/71231978
复制相似问题