我正在尝试使用Laotian
解析utf8_ireplace
文字,而我正在
未定义的抵消通知。
我能看到的一件事是有变音符号。那会引起警告吗?或者有人能给我一个线索,为什么它总是老挝(我正在处理的6种语言)?
对于utf8_replace
,是否应该采用不同的方式处理老挝语和类似语言(如藏语)?它是一个众所周知的问题,它会引起那些语言中某些字符的注意吗? diacritcals是问题还是其他什么?除了关闭通知报告之外,有谁知道如何不通知?
更新:实际上我在老挝补充说,单词之间没有空格,所以你必须将字符串分开,这就是我使用utf8_replace的原因,但是对于老挝来说它是失败的,尽管它似乎适用于泰语例。所以我真的想要分解字符串,但由于某种原因,偏移量是未定义的。西藏人似乎也有问题,例如“α╜ª”
这是一个核心问题:为什么我在老挝的某些单词上使用utf8_replace
得到通知?
(的Joomla)
// Iterate through the terms and test if they contain the relevant characters.
for ($i = 0, $n = count($terms); $i < $n; $i++)
{
$charMatches = array();
if ($lang === 'zh')
{
$charCount = preg_match_all('#[\x{4E00}-\x{9FCF}]#mui', $terms[$i], $charMatches);
}
elseif ($lang === 'ja')
{
// Kanji (Han), Katakana and Hiragana are each checked
$charCount = preg_match_all('#[\x{4E00}-\x{9FCF}]#mui', $terms[$i], $charMatches);
$charCount += preg_match_all('#[\x{3040–\x{309F}]#mui', $terms[$i], $charMatches);
$charCount += preg_match_all('#[\x{30A0}-\x{30FF}]#mui', $terms[$i], $charMatches);
}
elseif ($lang === 'th')
{
$charCount = preg_match_all('#[\x{0E00}-\x{0E7F}]#mui', $terms[$i], $charMatches);
}
elseif ($lang === 'km')
{
$charCount = preg_match_all('#[\x{1780}-\x{17FF}]#mui', $terms[$i], $charMatches);
}
elseif ($lang === 'lo')
{
$charCount = preg_match_all('#[\x{0E80}-\x{30EFF}]#mui', $terms[$i], $charMatches);
}
elseif ($lang === 'my')
{
$charCount = preg_match_all('#[\x{1000}-\x{109F}]#mui', $terms[$i], $charMatches);
}
elseif ($lang === 'bo')
{
$charCount = preg_match_all('#[\x{0F00}-\x{0FFF}]#mui', $terms[$i], $charMatches);
}
// Split apart any groups of characters.
for ($j = 0; $j < $charCount; $j++)
{
if (isset($charMatches[0][$j]))
{
$tSplit = JString::str_ireplace($charMatches[0][$j], '', $terms[$i], null);
if (!empty($tSplit))
{
$terms[$i] = $tSplit;
}
else
{
unset($terms[$i]);
}
$terms[] = $charMatches[0][$j];
}
}
}
// Reset array keys.
$terms = array_values($terms);
答案 0 :(得分:0)
我认为偏移误差可能是指preg_match
中使用的正则表达式。我已经测试了正则表达式&#39; lo&#39;使用regex101.com并返回此错误:
\ x {30EFF} 字符偏移太大。将其减少到4十六进制 字符或启用UTF-16(u-modifier)
其他正则表达式测试得很好。