如何操纵字符串来删除引号?

时间:2012-10-27 10:06:24

标签: php html string forms

我正在尝试操纵一个字符串,以便<a href><\a>中的任何引号(“)被取出...对不起,如果它之前被问过,但我无法得到它工作!顺便说一下,我正在从一个表单中发布数据,然后操作字符串。这基本上是html,但它是一个字符串的形式,我想在图像和链接之类的东西上取出引号......事情是,我不想逃避引号,因为这会破坏链接...而且重点是html可以使用并且工作正常......但现在,有些东西会自动在里面创建第二组引号正常的引号,如下:<a href="\"http://www.example.com/\""></a>

示例输入为: <p><a href="http://www.example.com">example</a></p>

这是我回应时的表现: <p><a href=\"http://www.example.com\">example</a></p>

以下是我希望它的外观: <p><a href="http://www.example.com">example</a></p>

所以我实际上想要摆脱(/)我的坏......

以下如何使用它:

我正在使用富文本编辑器编写html,然后通过带有post方法的表单发送它,但它一直放入双引号...我注意到当我编辑RTE的源并取出所有引号时,链接工作...但我不能让我的用户进入源并每次都这样做,所以我需要一个自动完成它的解决方案......

4 个答案:

答案 0 :(得分:1)

确定..所以你可以试试$result = stripslashes($string)或者使用像

这样的正则表达式

$result = preg_replace( '/\\\\(?=")/', '', $string )

$result = preg_replace( '/\\\\"/', '"', $string )但在这种情况下更好的是$result = str_replace( '\\"', '"', $string )



编辑:这对我来说很好用

$input = '<p><a href=\"http://www.example.com\">example</a></p>';

echo htmlspecialchars($input) . '<br/>';

$output = preg_replace( '/\\\\(?=")/', '', $input );

echo htmlspecialchars($output) . '<br/>';

答案 1 :(得分:0)

我之前的回答有一些问题,但这应该有效。

$string='<a href="gf">ahdasd"asjda</a>';
function replacequotes($matches){
return $matches[1].str_replace('"','',$matches[2]).$matches[3];
}
echo preg_replace_callback('/(<a href=)(.+?)(<\/a>)/','replacequotes',$string);

以下是演示:http://codepad.org/nXr7XTpx

答案 2 :(得分:0)

如果您想要替换双引号的所有实例而不管它们的位置如何,那么str_replace也可以这样做;

str_replace("\"", "", $string);

(反斜杠用于将引号读作非文字字符)

当然这种方法的缺点在于它是不分青红皂白的,但我想我会发布这个,因为有时你想要使用正则表达式,比如preg_match,有时你只想要替换所有的实例字符串中的子字符串。

答案 3 :(得分:0)

魔术引号已开启。这是我唯一能想到的就是添加这些斜杠。

http://php.net/manual/en/security.magicquotes.what.php

http://www.php.net/manual/en/security.magicquotes.disabling.php