PHP preg_match / replace不会处理字符" ndash"在file_get_contents

时间:2016-11-02 09:11:19

标签: php preg-replace file-get-contents

我通过file_get_contents($file)获得了一个字符串。

为什么我无法替换" - " (不是"减去"但HTML –)使用PHP的preg_replace函数? preg_match也不起作用:

e.g。

$file的输出是"等等 - 等等#34;

$str = file_get_contents($file); $str = preg_replace('/–/', 'test', $str); echo $str;

应该返回blah test blah,但会返回blah – blah

乳清是那个,我怎样才能替换ndash呢?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

该文件似乎包含长划线的HTML实体,为了获得的纯文本,您需要先使用html_entity_decode

使用

$str = preg_replace('/–/', 'test', html_entity_decode($str));
                                   ^^^^^^^^^^^^^^^^^^^^^^^^

PHP demo

$str = 'blah – blah';
echo "Original: " . $str . "\n";
$str = preg_replace('/–/', 'test', html_entity_decode($str));
echo "Replaced: " .  $str;

输出:

Original: blah – blah
Replaced: blah test blah