php preg_replace

时间:2011-05-19 12:55:35

标签: php preg-replace

$flr = preg_replace("/\\\'/","%27",$flr);

如果网址带有此符号:',它被%27替换,网址应变为http://localhost/%27 但这不起作用。例如:

$flr = preg_replace("/\\\"/","%22",$flr);

url replacment有效,我得到http://localhost/%22

那为什么第一个例子不起作用?

测试我正在使用:

function isValidFLR(&$flr) {
  $flr = preg_replace("/\\\'/","%27",$flr);
  $flr = preg_replace("/\\\"/","%22",$flr);
  echo $flr;
  die();
}

4 个答案:

答案 0 :(得分:1)

您要求的只是urlencode()

如果您只想替换几个特定字符,则应该尝试使用str_replace()代替。

答案 1 :(得分:0)

你在使用PHP的字符串转义引号时遇到问题,与正则表达式的转义相混淆。你最终会得到一个非常混乱的反斜杠序列!

对于您的问题,最直接的解决方案是在搜索双引号时在您的正则表达式字符串上使用单引号:

$flr = preg_replace('/\\\"/',"%22",$flr);

然而,在你的情况下,一个更简单的解决方案就是乞求:在这种情况下,为什么你需要使用正则表达式?一个简单的str_replace()也可以完成这项工作,并且可以避免所有那些令人毛骨悚然的斜线。

答案 2 :(得分:0)

如何测试以下内容:

$flr = preg_replace("/\\\"/","%27",$flr);

(将'替换为

答案 3 :(得分:0)

$flr = preg_replace("/'/","%27",$flr);

会奏效。

但是,正如其他人所说,实现这一目标的PHP功能之一可能是更好的解决方案。