替换文本反斜杠和单引号

时间:2017-04-18 09:52:32

标签: php regex preg-replace symbols php-5.2

get_magic_quotes_gpc()0

如果我对这些数组使用preg_replace()

$replace[0]=">";
$replace[1]="<";
$replace[2]="&";
$replace[3]='"'; 

$pattern[0]="#&gt;#";
$pattern[1]="#&lt;#";
$pattern[2]="#&amp;#";
$pattern[3]="#&quot;#";

$pass=preg_replace($pattern, $replace, $pass);

它的工作原理除了反斜杠和单引号外。

我试过了:

$replace[5]="\\";
$pattern[5]="/&#92;/"; 

但它失败了。

我使用的是php5.2

1 个答案:

答案 0 :(得分:0)

根据您的模式分隔符与模式中的#发生冲突,您的模式可能无效。您的$pattern[5]模式应该为您服务。在测试期间,这可能是一个简单的错误。

以下代码将使用常用和非冲突的斜杠(/)作为分隔符替换您的字符数组:(Demo

$pattern[0]="/&gt;/";
$pattern[1]="/&lt;/";
$pattern[2]="/&amp;/";
$pattern[3]="/&quot;/";
$pattern[4]="/&#39;/";
$pattern[5]="/&#92;/";

$replace[0]=">";
$replace[1]="<";
$replace[2]="&";
$replace[3]='"';
$replace[4]="'";
$replace[5]="\\";

$pass="Th&#92;is &lt; is &amp; a &gt; sample &quot;string&#39;";
var_export($pass);
echo "\n";
echo preg_replace($pattern, $replace, $pass);

输出:

'Th&#92;is &lt; is &amp; a &gt; sample &quot;string&#39;'
Th\is < is & a > sample "string'