所以我试图检查$ oneAya是否在字符串“هوالملكالقدوس”中,但每当我尝试下面的代码时,它会打印“找不到”..我做错了什么?
$oneAya = "هُوَ";
if(preg_match($oneAya,"هُوَ الْمَلِكُ الْقُدُّوسُ")) {
echo 'found';
} else {
echo 'not found';
}
答案 0 :(得分:1)
首先,你的正则表达式没有做好彻底准备:你没有把分隔符。
$oneAya = "/هُوَ/";
if(preg_match($oneAya,"هُوَ الْمَلِكُ الْقُدُّوسُ")) {
echo 'found';
} else {
echo 'not found';
}
其次,如果你的PCRE是用UTF-8编译的,那么你很好,但preg_match()
在解决你的问题方面做得很多,只需你mb_strpos()
:
if (mb_strpos("هُوَ الْمَلِكُ الْقُدُّوسُ", "هُوَ") !== false) {
echo 'Found.';
}
答案 1 :(得分:1)
您需要分隔正则表达式,并使用Unicode修饰符:
$oneAya = '/هُوَ/u';
没有分隔符,正则表达式引擎不知道如何解析它。如果要匹配ASCII字符范围之外的任何内容,则需要Unicode修饰符。