preg_match следующая строка - PullRequest
1 голос
/ 11 ноября 2010

Если у меня есть следующий текст

#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 ]

1 голос
/ 11 ноября 2010

Используйте совпадения начала и конца строки ^ и $ соответственно:

preg_replace('/^Hello.*$/m', 'Hello World Again', $content);
0 голосов
/ 11 ноября 2010

Вы заменяете новую строку. Попробуйте это:

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

Включает все, что соответствует [^#|^ ] в строке замены.

В качестве альтернативы, включите разрыв строки в строку замены:

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

Вы также можете упростить свое регулярное выражение:

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