preg_match下一行问题

时间:2010-11-11 20:38:08

标签: php regex preg-match

如果我有以下文字

#Welcome to the world of Hello World Again
#Hello World Again
Hello World Again

#Other Stuff
Other

我正在使用此命令

preg_replace('/[^#|^ ]Hello.*/m', 'Hello Again', $content);

我的输出一直给我

#Welcome to the world of Hello World Again
#Hello World AgainHello Again

#Other Stuff
Other

我想要的是

#Welcome to the world of Hello World Again
#Hello World Again
Hello Again

#Other Stuff
Other

任何想法为什么,谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

分别使用行开始和结束匹配器^$

preg_replace('/^Hello.*$/m', 'Hello World Again', $content);

答案 1 :(得分:0)

您正在更换换行符。试试这个:

preg_replace('/([^#|^ ])Hello.*/m', '\1Hello World Again', $content);

它包含替换字符串中[^#|^ ]匹配的所有内容。

或者,在替换字符串中包含换行符:

preg_replace('/[^#|^ ]Hello.*/m', PHP_EOL . 'Hello Again', $content);

您还可以简化正则表达式:

`/^[# ]Hello.*$/'