php - preg_replace 用奇怪的字符替换引号?

标签 php regex character-encoding preg-replace

如果我执行以下代码:

$string =  'This is “Bob” Batman.';
echo $string . '<br>';
$string = preg_replace('/(["“”„]Bob["“„])/',  '-$1-', $string);
echo $string;

那么结果就是

This is “Bob” Batman.

This is �-�Bob�-�� Batman.

为什么最后一行不只是这样:

This is -“Bob”- Batman.

最佳答案

这是一个格式问题。

您可以使用正则表达式 u 标志来解决您的问题:

$string = preg_replace('/(["“”„]Bob["“”„])/u',  '-$1-', $string);

关于php - preg_replace 用奇怪的字符替换引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49883967/

相关文章:

javascript - 我正在尝试在 javascript Controller 中使用正则表达式验证字符串?

python - 从 python 读取 BerkleyDB 文件 : `\x01\x0b\x88\x0c\x01` ?

Python - Python 3.1 似乎无法处理 UTF-16 编码的文件?

python DBF : 'ascii' codec can't decode byte 0xf6 in position 6: ordinal not in range(128)

php - (PHP) 将 'guess counter' 添加到随机数游戏

php - 了解准备好的语句 - PHP

php - 避免处理替换字符串中的特殊 preg 字符

php - 在 while 循环期间根据值预选择下拉选项

php - PHP 的抓取库 - phpQuery?

json - 正则表达式用_(Sublime)替换带引号的字符串中的空格