PHP preg_match使卷曲撇号与其他类型的卷曲引号不匹配.怎么避免?

我有以下变量内容:

$content_content =’“我不能这样做,她说.”’;

我想为每个“单词”做一个preg_match,包括收缩,所以我使用preg_match如下:

if (preg_match_all('/([a-zA-Z0-9’]+)/', $content_content, $matches))
 {
    echo '<pre>';
    print_r($matches);
    echo '</pre>';
 }

但是,似乎通过在正则表达式中包含’,它也会捕获卷曲的双引号,如上面的命令输出:

Array
(
    [0] => Array
        (
            [0] => ��
            [1] => I
            [2] => can’t
            [3] => do
            [4] => it
            [5] => she
            [6] => said
            [7] => ��
        )

    [1] => Array
        (
            [0] => ��
            [1] => I
            [2] => can’t
            [3] => do
            [4] => it
            [5] => she
            [6] => said
            [7] => ��
        )

)

如何包括’没有它还包括“和”?

这是因为你在字符集中使用的“花式”撇号是以二进制形式处理的;您需要使用其各自的 modifier启用Unicode模式:

preg_match_all('/([a-zA-Z0-9’]+)/u', $content_content, $matches)

Demo

相关文章
相关标签/搜索