PHP:文本替换并不总是生效?

时间:2012-10-05 07:53:27

标签: php replace str-replace typography

即使这个问题是基于wordpress方法,这个问题可能是纯粹的php问题。

我编写了以下函数,以便在整个网站上使用引号,短划线和其他印刷符号进行一致。

add_filter('the_content', 'wr_replace_text');
add_filter('the_excerpt', 'wr_replace_text');

function wr_replace_text($text){
    $replace = array(
            '„' => '»',
            '“' => '»',
            '›' => '»',
            '“' => '«',
            '”' => '«',
            '‹' => '«',
            ' - ' => ' — ',
            ' – ' => ' — ',
            ' –,' => ' —, ',
            '...' => '…',
            '(c)' => '©'
    );
    $text = str_replace(array_keys($replace), $replace, $text);
    return $text;
}

然而,这似乎并不准确。有时候它会起作用,有时却不起作用。

.e.g。以下句子中有引号,不会被替换。

  我很有意思。 “在vero”eos et a

我知道为什么我的替换函数与这个引号不匹配而不是替换它们?如果我将'A' => 'B'添加到我的函数中,我可以清楚地看到该函数有效,因为所有“A”都被“B”替换。但是,为什么引用不会在这种情况下起作用。在我的网站上还有其他案例,其中引号被替换。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

示例中的引号是双引号(“),应编码为

'"' => "