用 preg_replace 替换 ereg_replace

10

你需要将函数ereg_replace("[\]", "", $theData)更改为preg_replace。

4个回答

22

ereg_replace转换为preg_replace,需要在一对分隔符之间放置正则表达式。

此外,你的正则表达式[\]无效的,不能用于preg_replace,因为\正在转义关闭字符类]

正确的转换代码如下:

preg_replace('/[\\\]/','',$theData) 

另外,由于字符类只有一个字符,因此没有真正需要使用字符类,您可以直接使用:

preg_replace('/\\\/','',$theData) 

由于您只需替换单个字符,因此不建议使用正则表达式。应该使用简单的文本替换,使用str_replace

str_replace('\\','',$data);

1
'/\/' 将通过 preg_replace 转义正斜杠,您需要使用 4 个反斜杠。 - Yanick Rochon
@Yanick,不会的。preg_replace将其视为/\ /,在分隔符内解码为文字反斜杠。请注意,'/\\/'也是正确的,因为\和\都可以在字符串文字中编码反斜杠。请注意,/不是字符串转义。 - Matthew Flaschen
更好的解释是因为 preg_replace 知道最后一个 / 是分隔符而不是模式主体中的字符,所以它将第三个反斜杠视为字面字符。然后我们知道 "/\\n/" 不等于 "/\\n",因为第三个反斜杠将转义 n。 - Scott Chu

2
str_replace("\\","",$theData);

但我真的怀疑你根本不需要那个替换操作,很可能你需要进行其他操作。
这个替换操作是用来做什么的?


0

我使用了这个sed命令自动将ereg_replace替换为preg_replace,并添加所需的斜杠。假设第一个正则表达式中没有\"。

 sed -i 's#ereg_replace("\([^"]*\)"#preg_replace("/\1/"#g' *.php

0
preg_replace("/\\\/", "", $theData);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接