您好我想删除此字符:|
使用php preg replace。
我的代码不起作用
$rstr = '|||is';
$Grab->text = preg_replace($rstr,'',$Grab->text);
echo $Grab->text;
答案 0 :(得分:3)
如果你真的想要使用正则表达式,你需要转义|
字符,special meaning:
$Grab->text = preg_replace('#\|#is', '', $Grab->text);
这假设您只想替换一个|
,而不是连续三个 - 在这种情况下您将使用:
$Grab->text = preg_replace('#\|{3}#is', '', $Grab->text);
另请注意,我使用#
作为delimiters - 当分隔符不是正则表达式中存在的字符时,更容易编写/读取正则表达式:更少逃避。
但是,正如 @Pekka 在对您的问题的评论中指出的那样,为什么不使用str_replace()
?
$Grab->text = str_replace('|', '', $Grab->text);
或者,如果您只想在有三个|
时进行替换:
$Grab->text = str_replace('|||', '', $Grab->text);
毕竟,在这样的简单情况下,不需要正则表达式。
答案 1 :(得分:2)
|
是一个正则表达式元字符,你也用它作为分隔符(这是2个问题)。
您应该转义|
符号,并使用其他分隔符(您也不需要i
和s
标记):
$rstr = '~\|~';
你的正则表达式是~~|is
,并出现以下错误消息:
Warning: preg_replace(): Unknown modifier '|' in /home/o3oYmU/prog.php on line 3
答案 2 :(得分:0)
|
在正则表达式中有特殊含义,它用于交替(即a|b|c
表示a或b或c)所以你必须逃避它:
$Grab->text = preg_replace("/\|\|\|is/",'',$Grab->text);
如果您指定字符串$rstr = '\\|\\|\\|is';
,请或双重转义