如何仅在阿拉伯语句子上添加跨度?

How to add span only on Arabic sentence?

在这段代码中,我检测到阿拉伯文字。但是,如果有阿拉伯语怎么写,会加span代码

<?php

/*
 function highlight($text, $words) {
    preg_match_all('~\w+~', $words, $m);
    if(!$m)
        return $text;
    $re = '~\b(' . implode('|', $m[0]) . ')\b~';
    return preg_replace($re, '<b>[=10=]</b>', $text);
}
*/

$arabic = "|ٮ|ٯ|ا|ب|ت|ث|ج|ح|خ|د|ذ|ر|ز|س|ش|ص|ض|ط|ظ|ع|غ|ف|ق|ك|ل|م|ن|ه|و|ي|ء|آ|ٱ|أ|إ|ة|ؤ|ئ|ى|ـ|،|؛|؟|٪|٫|٬|٩|٨|٧|٦|٥|٤|٣|٢|١|٠|ٍ|ِ|ْ|ّ|ٌ|ُ|ً|َ";

$kata = "
Excellence is to worship Allah as if you see Him
أَنْ تَعْبُدَ اللَّهَ كَأَنَّكَ تَرَاهُ فَإِنْ
 for you do not see Him but He certainly sees you.
";

if(mb_ereg(".*[$arabic].*", $kata)) {
    echo $kata;
}
else
{
    echo "Text doesnt have arabic/hebrew characters.";
}

?>

变成这样

Excellence is to worship Allah as if you see Him 
<span> أَنْ تَعْبُدَ اللَّهَ كَأَنَّكَ تَرَاهُ فَإِنْ </span> 
 for you do not see Him but He certainly sees you.
  • 了解阿拉伯字母的编码方式。例如。 here 可以看到,从U+0600
  • 开始
  • 解析$kata直到遇到这样的字符
  • 插入<span>
  • 继续解析直到第一个非阿拉伯字符
  • 插入</span>
  • 继续这样做直到字符串结束。

这应该适合你 preg_replace("#([$arabic].+?(?=[a-z]))#us", '<span></span>', $kata)

我尝试使用 Unicode character properties 但无法正确匹配阿拉伯语变音符号。

代码:

<?php

$arabic = "|ٮ|ٯ|ا|ب|ت|ث|ج|ح|خ|د|ذ|ر|ز|س|ش|ص|ض|ط|ظ|ع|غ|ف|ق|ك|ل|م|ن|ه|و|ي|ء|آ|ٱ|أ|إ|ة|ؤ|ئ|ى|ـ|،|؛|؟|٪|٫|٬|٩|٨|٧|٦|٥|٤|٣|٢|١|٠|ٍ|ِ|ْ|ّ|ٌ|ُ|ً|َ";

$kata = "
Excellence is to worship Allah as if you see Him
أَنْ تَعْبُدَ اللَّهَ كَأَنَّكَ تَرَاهُ فَإِنْ
فَإِنْ لَمْ تَكُنْ تَرَاهُ فَإِنَّهُ يَرَاكَ
for you do not see Him but He certainly sees you.

Excellence is أَنْ تَعْبُدَ to worship Allah فَإِنْ as if you see Him
";

// Check if Arabic characters in the string 
/* if(mb_ereg(".*\p{Arabic}.*", $kata)) { */
if(mb_ereg(".*[$arabic].*", $kata)) {
    /* echo preg_replace("#(\p{Arabic}.+?(?=[a-z]))#us", '<span></span>', $kata); */
    echo preg_replace("#([$arabic].+?(?=[a-z]))#us", '<span></span>', $kata);

}
else
{
    echo "Text doesnt have arabic characters.";
}

?>

输出:

Excellence is to worship Allah as if you see Him
<span>أَنْ تَعْبُدَ اللَّهَ كَأَنَّكَ تَرَاهُ فَإِنْ
فَإِنْ لَمْ تَكُنْ تَرَاهُ فَإِنَّهُ يَرَاكَ
</span>for you do not see Him but He certainly sees you.

Excellence is <span>أَنْ تَعْبُدَ </span>to worship Allah <span>فَإِنْ </span>as if you see Him