逃脱报价,“和'

时间:2011-09-16 11:04:58

标签: php string preg-replace ereg-replace

我正在努力解决这个问题,这让我发疯,我希望我可以使用preg_replace或ereg_replace。

基本上我正在输出从新闻文章中获取的文本字符串,我将前100个字符四舍五入到最接近的单词结尾,如果“或”出现在100个字符的字符串中,则会出现问题关闭“或”存在,这会导致我的PHP代码失败。所以我需要编写一些替换代码,以便所有“和”将替换为\“和\”,以便它们被转义,不会影响我的PHP。


更新

我无法纠正与数据库插入有关的任何事情,因为我正在处理一个非常旧的数据存档,我无法处理并重新输入到数据库中,所以我坚持使用我所拥有的数据。

这是我的代码:

$text = preg_replace('/\s+?(\S+)?$/', '',substr($text, 0, 100));

echo '<div style="color: #8197cd;" >'.$text.'...</div>';

这样就可以获取我的文本,缩短它并将其放到最近的单词中。

然后我想尝试做一些事情:

$text = preg_replace("\"","\"",$text);
$text = preg_replace("\'","\'",$text);

但preg_replace不是我的强项,所以这是完全错误的!

3 个答案:

答案 0 :(得分:1)

  

如果“或”出现在100个字符的字符串中并且没有关闭“或”,则会出现问题,这会导致我的PHP代码失败。

你正试图修复一个不应该存在的问题 - 很可能是在mySQL查询中未转义的输入。您需要修改它(这也是一个安全问题)。

显示破解的代码,我相信有人能够指出需要做什么。

答案 1 :(得分:0)

你的问题似乎遗漏了一些东西。您应该考虑发布有问题的代码。

在回显的变量中包含引号不会失败。我唯一可以想象会导致错误的是,如果你使用某种模板系统或代码来获取字符串并使用它在某处做一个eval(),但这将是一个非常糟糕的系统。

如果要将字符串插入数据库,则需要转义这些字符,如SiteSafeNL所述。

如果eval是问题的根源,那么他建议的其他方法也会修复它。

根据问题的最新补充添加

请试试这个:

echo '<div style="color: #8197cd;" >'. htmlentities($text) . '...</div>';

并且preg_replaces没用,所以只需省略该代码。

答案 2 :(得分:-2)