php函数preg_replace与正则表达式不起作用,语法问题

时间:2010-12-13 17:01:01

标签: php regex preg-replace pcre

我试图用preg-replace替换删除的unnessary新行,但我的正则表达式是不正确的。任何想法我的正则表达式有什么问题吗? (我有Apache / 2.0.54& PHP / 5.2.9

现在有:

{
blaa {
blow;
blue};
bell;}
}ball

好像:

{blaa {blow;blue};bell;}}ball

这些正则表达式不起作用,它们删除太多或工具?

$buffer = preg_replace('#/\}\n|\r|\s/#s', '}', $buffer);
$buffer = preg_replace('#/\{\n|\r|\s/#s', '{', $buffer);
$buffer = preg_replace('#/\;\n|\r|\s/#s', ';', $buffer);

/ g(全局)给出了blanc内容,没有#the doestnt做任何事情。奇怪?! 任何人都知道为什么这些不起作用?

3 个答案:

答案 0 :(得分:1)

$buffer = preg_replace('#([{};])(?:\n|\r|\s)#s', '$1', $buffer);

答案 1 :(得分:1)

这对我有用:

$buffer = preg_replace('/\}\\n|\\r|\\s/', '', $buffer);

答案 2 :(得分:1)

如果要删除{};之后的任何空格,请执行以下操作:

preg_replace('/([{};])\s+/', '$1', $buffer)

此处/delimiters; ([{};])描述了捕捉到匹配时{};的一个字符;并且\s+描述了以下任何空格字符(已包含\r\n)。