在PHP中,是否有一种已知的安全/可靠的方式
我知道,对于一组特定字符,我可以使用mb_ereg_replace
替换特定字符。但是,我有兴趣能够扫描可能包含任何希伯来字符的字符串,然后将其替换为。
也就是说,我可能有两个像这样的字符串
<?php
$string1 = "Look at this hebrew character: חַ. Isn't it great?";
$string2 = "Look at this other hebrew character: יַָ. It is also great?";
我想要一个能给我以下字符串的单个函数
Look at this hebrew character: \texthebrew{ח}. Isn't it great?
Look at this other hebrew character: \texthebrew{י}. It is also great?
理论上我知道我可以在the hebrew UTF-8 range中扫描字符串中的字符并检测那些但是字符串上的字符编码在PHP中的工作方式对我来说总是有点朦胧,并且如果存在这样的事情,我宁愿使用经过验证/已知的解决方案。
答案 0 :(得分:2)
mb_ereg_replace_callback function对您的情况很有用。 regular expression dialect特别支持命名属性,希伯来语属性。那是Hewbrew Unicode block(IntlChar::BLOCK_CODE_HEBREW
)。
您需要做的就是掩盖希伯来语片段:
mbregex_encoding('utf-8');
var_dump(mb_ereg_replace_callback('\p{Hebrew}+', function($matches) {
return vsprintf('\texthebrew{%s}', $matches);
}, $subject));
输出:
string(65) "Look at this hebrew character: \texthebrew{חַ}. Isn't it great?"
如输出所示,带有两个代码点的四个字节正确地包装在一个段中。
我不知道用这个小代码在PHP中做任何其他方法。