【发布时间】:2015-12-22 06:38:36
【问题描述】:
我只是偶然发现了这段代码:
/**
* @param $string
* @return bool
*/
protected static function isRubel($string)
{
$lString = strtolower($string);
/**
* @hint: The characters looking like "p" as in Petra are in fact instances of cyrillic "Er"!
*/
return strpos($string, 'руб') !== false || strpos($string, 'р') !== false || strpos($lString, 'rub') !== false;
}
作者很好地提供了一个提示,这个字符不是p,而是一个unicode符号р;正如我所认为的那样,它是p。
为了更清楚地表明该字符是 unicode 符号,是否可以将这段代码写成不同的方式?
从某种意义上说,写 unicode 表示而不实际写 unicode 字符。
我知道我可以定义一个字符串常量CRYLLIC_ER = р,但我一直在寻找更通用的解决方案。
【问题讨论】:
-
可能重复 ^ ?
-
仍然,使用常量。
-
PHP 不支持 unicode,因此该字符实际上是用 UTF-8 编码的。不过,有一个简单的技巧可以将 unicode 转义字符转换为 UTF-8,您可以使用
json_decode('"\u0440"')。顺便说一下,这是您的特殊p的代码。 -
@Havenard 这是 RC 链接中的内容,将属于重复项,n'est-ce pas?