如果我有以下文字
#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
任何想法为什么,谢谢你的帮助
答案 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.*$/'