#php #replace #preg-replace #design-patterns
#php #заменить #preg-заменить #шаблоны проектирования
Вопрос:
Мне нужно заменить текст, начинающийся с ‘Title:’ и заканчивающийся на ‘Article Body:’, используя preg_replace или другим способом. Замененный текст не будет содержать слова, указанные выше в кавычках.
например:
Название:
пример текста 1
Текст статьи:
пример текста 2
Должен выводиться только
пример текста 2
Как я могу это сделать с помощью php?
Комментарии:
1. звучит достаточно просто. что вы пробовали до сих пор?
2. Я знаю, что это можно было бы сделать с помощью preg_replace. Но у меня нет опыта работы с регулярными выражениями.
Ответ №1:
Используйте положительные / отрицательные прогнозы.
$result = preg_replace('/(?<=Title:).*(?=Article Body:)/s', 'nTestn', $subject);
Приведенное выше регулярное выражение заменит все, что находится внутри Title : … Тело статьи: с помощью nTestn
Объяснение :
"
(?<= # Assert that the regex below can be matched, with the match ending at this position (positive lookbehind)
Title: # Match the characters “Title:” literally
)
. # Match any single character
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(?= # Assert that the regex below can be matched, starting at this position (positive lookahead)
Article Body: # Match the characters “Article Body:” literally
)
"
Ответ №2:
$str = 'Title: this is sample text Article Body: this is also sample text';
// output: this is sample text this is also sample text
echo preg_replace('~Title: (.*)Article Body: (.*)~', '$1 $2', $str);
Регулярные выражения очень полезны, и вы должны научиться их использовать. В Интернете есть много статей, также это обобщает
может вам помочь.
Комментарии:
1. Спасибо! Но это не работает. Мне нужно заменить этот шаблон без текста.
2. @AmilaPremasiri: Удалите ` $ 2` из второго параметра.
3. Работает ли он со строковыми литералами в качестве параметра замены (
'$1 $2'
бит)? Я всегда предполагал, что это должна быть, ну, не буквальная строка (например"$1 $2"
).4. Извините, в текстовой структуре должно быть сокращение строк. Структура похожа на эту статью realorscam.com/big-brother-7-–-grace-is-evicted.html