在PHP中将Microsoft卷曲引号转换为直引号

在PHP中将Microsoft卷曲引号转换为直引号,php,mysql,double-quotes,smart-quotes,Php,Mysql,Double Quotes,Smart Quotes,我在试图修复客户端数据库记录时遇到了很大困难。我需要找到所有像这样的卷曲引号,并将其替换为直引号 尝试1 我尝试在我的MySQL数据库上运行这个,但没有成功 update wp_posts set post_content = replace(post_content,'“','"'); 尝试2 我也尝试过在PHP中搜索并替换为以下内容,但也没有运气 <?php $str = ' “evil curly quotes“ no "good straight quotes"'; str_r

我在试图修复客户端数据库记录时遇到了很大困难。我需要找到所有像这样的卷曲引号,并将其替换为直引号

尝试1
我尝试在我的MySQL数据库上运行这个,但没有成功

update wp_posts set post_content = replace(post_content,'“','"');
尝试2
我也尝试过在PHP中搜索并替换为以下内容,但也没有运气

<?php
$str = ' “evil curly quotes“ no "good straight quotes"';
str_replace ('“', '"', $str);

echo $str;

// Prints:
// “evil curly quotes“ no "good straight quotes"
?>


任何人,请帮助我,除了手动编辑数千条记录之外,还必须有一种简单的方法来执行此操作?

您实际上没有替换任何值。您忘记将
str\u replace
调用的返回值赋给
$str
变量。这将实现以下功能:

<?php
$str = ' “evil curly quotes“ no "good straight quotes"';
$str = str_replace ('“', '"', $str);

echo $str;

// Prints:
// “evil curly quotes“ no "good straight quotes"
?>


编辑:Tom D在他的评论中也提供了正确的答案(为了公平起见,他比我早做了)。

您实际上并没有替换任何值。您忘记了将
str\u replace
调用的返回值赋给
$str
变量。这将完成以下操作:

<?php
$str = ' “evil curly quotes“ no "good straight quotes"';
$str = str_replace ('“', '"', $str);

echo $str;

// Prints:
// “evil curly quotes“ no "good straight quotes"
?>


编辑:Tom D在他的评论中也给出了正确的答案(为了公平起见,他比我早回答).

它们是以卷曲引号的形式存储的,还是以html代码的形式存储的?“;@PhilCross不幸的是,它们被存储为实际的卷曲引号,用于html链接,这使得链接无法正常工作。不幸的是,我不能再进一步了!也许这个网站会给你一个线索?我不认为PHP会改变$str与您的操作一致。请尝试$str=str\u替换(…)@TomD你说得对,好眼力,谢谢你。它们是以卷曲引号的形式存储的,还是以html代码的形式存储的?
“;
@PhilCross不幸的是,它们被存储为实际的卷曲引号,用于html链接,这使得链接无法正常工作。不幸的是,我不能再进一步了!也许这个网站会给出y你有什么线索吗?我不认为PHP会随着你的行为而改变$str的值。试试$str=str\u replace(…)@TomD你说得对,好眼力,谢谢你work@TomD我在回答中添加了免责声明。@TomD我在回答中添加了免责声明。