如何从字符串中删除所有正则表达式特殊字符?
例如: 我有一个 "/^bla\/bla\/bla\//i
",我想要的是 "bla/bla/bla/
"
我猜在我思考的背景下这不是真正可能的。感谢你们的回复。
我不确定这是否回答了你的问题,但是你可能正在寻找 preg_quote (http://us.php.net/manual/en/function.preg-quote.php) 函数吗?
<?php
$string = "/^bla\/bla\/bla\//i";
$patterns = array(
"/\/\^([\w]+)/i" => "$1/",
"/[\/]{2,}i$/i" => "/",
"/\\\/" => "",
"/[\/]{2,}/" => "/",
"/\/$/" => "",
);
echo preg_replace(array_keys($patterns),$patterns,$string);
//OR, this:
echo "\n";
$string = "/^bla\/bla\/bla\//i";
$pattern = "/(?![\/\w]$)([\w]+)/";
preg_match_all($pattern,$string,$matches);
echo join('/',$matches[0]);
?>
我不太明白你想做什么,但如果你只是想从字符串中删除某些字符,最好使用strtr()
。首先,它比使用正则表达式要快得多,而且可能更易读。
编辑:实际上,我真的不明白你想实现什么。
.
(句点)这样的元字符,或者像[abc]
这样的字符类?等等。请先定义你想要处理的正则表达式子集。 - Bart Kiers/^bla\/(bla)\/bla\//i
,你想要bla//bla/
还是只是去掉括号? - Anthony