我有一个包含英文和阿拉伯文书籍标题的MySQL数据库,并且我使用的是PHP类,该类可以自动将阿拉伯文本音译为拉丁文字。
我希望我的输出HTML看起来像这样:
<h3>A book</h3>
<h3>كتاب <em>(kitaab)</em></h3>
<h3>Another book</h3>
PHP是否可以根据其中使用的Unicode字符和字形来确定字符串的语言?我试图得到这样的东西:
$Ar = new Arabic('EnTransliteration');
while ($item = mysql_fetch_array($results)) {
...
if (some test to see if $item['item_title'] has Arabic glyphs in it) {
echo "<h3>$item[item_title] <em>(" . $Ar->ar2en($item['item_title']) . ")</em></h3>";
} else {
echo "<h3>$item[item_title]</h3>";
}
...
}
幸运的是,该类在输入拉丁字符时不会阻塞,因此从理论上讲我可以通过转换发送每个结果,但这似乎浪费了处理时间。
谢谢!
编辑: 我仍然没有找到一种方法来检查字形或字符。我想我可以将所有阿拉伯字符放在一个数组中,并检查数组中是否有任何匹配字符串的部分…
但是,我确实找到了一个最终可能会很好用的临时解决方案。它使每个标题都通过转换,而与语言无关,但是如果更改了字符串,则仅输出带括号的音译:
while ($item = mysql_fetch_array($mysql_results)) {
$transliterate = trim(strtolower($Ar->ar2en($item['item_title'])));
$item_title = (strtolower($item['item_title']) == $transliterate) ? $item['item_title'] : $item['item_title'] . " <em>($transliterate)</em>";
echo "<h3>$item_title</h3>";
}
应该这样做:
preg_match("/\p{Arabic}/u", $item['item_title'])
如果需要,可以使该正则表达式复杂一些,但我认为您确实不需要。
该\p
转义序列,您可以根据自己的Unicode属性选择字符(当u
模式修改时)。
PHP手册中提到:“ PCRE不支持扩展属性,例如“希腊语”或“ InMusicalSymbols”。但这不再是完全正确的。PCRE
6.5版增加了对脚本名称的支持
。
本文向大家介绍从PHP中的字符串检测语言,包括了从PHP中的字符串检测语言的使用技巧和注意事项,需要的朋友参考一下 无法从字符类型中检测到语言。还有其他方法,但不能保证完全准确性。'TextLanguageDetect梨包'可以正确使用。以下是相同的示例代码- 示例 输出结果 这将产生以下输出- 它易于使用,并具有52种语言数据库。但是不利的是,使用此软件包无法检测到东亚语言。
问题内容: 我有一个长度为141个字符的字符串。使用以下代码,如果字符串大于或小于140,我有一条语句返回一条消息。 我在$ message上使用了var_dump,它显示的字符串是。这是我的问题:当我将语句的编号更改为和时,尽管字符串大于131,它仍然返回第一条消息。 无论我使用的数字少于141,我总是得到“没有比赛”。回到我身边。 问题答案: 尝试使用通用语法:
我想检查一个字符串是否包含特殊字符,比如!@#$%^&*.,<>/\'“;:?如果字符串至少包含其中一个字符,则返回true。 我尝试使用以下regex脚本:
问题内容: 如何检查是否是那里的? 我想分配给是否有结果,否则。 我当前的代码是: 问题答案:
我正在处理的arraylist。 我尝试检查数组中的空索引的代码: 我试过了,但不知怎么的,验证不起作用。我想知道怎么做?有没有人知道这个问题的解决方法或工作方法?
问题内容: 任务是编写一个程序,该程序接受来自用户的两组单词,然后如果两个单词都是字谜(或者至少如果一个字母的所有字母都存在于另一个字母中),则打印“ True”语句,然后显示“ False”声明是否。 作为一个整体编程人员,我不知道该如何超越索引一个字符串并将一个字符串的所有片段相互比较的方法。我强调我是一个初学者;我读过许多其他标有Python和Anagram的帖子,它们始终排在我的头上,并引