如何检测字符串中汉字的存在

时间:2013-12-27 10:14:02

标签: php filter preg-match character symbols

我基本上制作了一个分析域名的脚本,其中一部分是获取他们的“锚文本”并查看这些字符串是否包含任何中文符号。

我正在使用此代码,但它似乎不起作用:

foreach ($anchors as $anchor) {

        // echo $anchor;

                if (preg_match("/\p{Han}+/u", $anchor))
                    $chinese_flag = 1;


                if($chinese_flag == 1):
                    echo "Found Chinese anchor in: " . $anchor;
                    break;
                endif;
}

当试图回应每个锚点时,我可以清楚地看到一些锚点使用中文符号,例如中文网站100强(仅举一个例子)。我在这里做错了什么?

P.S。我还尝试过在堆栈溢出时发现的其他RE,但似乎没有一个在我的情况下工作。

1 个答案:

答案 0 :(得分:1)

这似乎有效:

foreach ($anchors as $anchor) {

                $chinese_flag = FALSE;

                if (preg_match("/[\p{Han}]/simu", $anchor))
                    $chinese_flag = TRUE;


                if($chinese_flag):
                    echo "Found Chinese anchor in: " . $anchor;
                    break;
                endif;
}

根据您的评论,我更新了答案:

<?php
$test = '&#x4E2D;';

$anchor = html_entity_decode($test, ENT_COMPAT, 'UTF-8');


if (preg_match("/[\p{Han}]/simu", $anchor)) {
    echo 'Yay';
}
?>