当我尝试使用缅甸语时,它没有返回正确的数据。我不知道我在哪里错了。请帮我找问题或给我解决方案
提前致谢
header('Content-Type: text/html; charset=utf-8');
/*$text = " 蝯 榩榿榩榿榩榿 @逯郹酟 勯噚嶢, 潫 橀槶澉 莦莚虙 弣抶 蒆葞 "; //Some text
$keyword = "箖緌翢";*/
$text ="အေမရိကန္အေျခစိုက္ Chevrolet ကားကုမၸဏီ၏ ၂၀၁၅ ကိုလာ ေမာ္ဒယ္ Chevrolet Malibu";
$keyword = "ကိုလာ";
function find_keywords($text,$search_keywords){
/*
$text : String value
$search_keywords : String value
Function : Seperating search_keywords variable through commna identifier and exact matching.
Return type : boolean
*/
if(empty($search_keywords) || empty($text))
return false;
$search_keywords_arr=explode(",", $search_keywords);
foreach($search_keywords_arr as $keyword) {
//if(preg_match("/\b".trim($keyword)."\b/i", $text) == true) return true;
if(preg_match_all("/(*UTF8)\b($keyword)\b/ui", $text) == true) return true;
}
return false;
}
if(find_keywords($text,$keyword)) echo "Match"; else echo "Not matched";
答案 0 :(得分:0)
由于某些多字节字符超出了单词边界字符 (\b
) 所涵盖的范围,因此您需要手动表达应该标识边界的字符。
我的代码段将查找字符串的开始/结束、空白字符和 unicode 标点字符。这应该可以帮助您入门,然后您可以根据需要进行修改。
代码:(Demo)
function find_keywords($text, $search_keywords) {
if (empty($search_keywords) || empty($text)) {
return false;
}
$search_keywords_arr = explode(",", $search_keywords);
foreach ($search_keywords_arr as $keyword) {
if (preg_match('/(?<=^|\s|\p{P})' .preg_quote($keyword, '/') . '(?=\p{P}|\s|$)/ui', $text)) {
return true;
}
}
return false;
}
$text = "အေမရိကန္အေျခစိုက္ Chevrolet ကားကုမၸဏီ၏ ၂၀၁၅ ကိုလာ, ေမာ္ဒယ္ Chevrolet Malibu";
$keyword = "ကိုလာ";
echo find_keywords($text, $keyword) ? "Match" : "Not matched";
输出:
Match