Как заменить текст по нескольким строкам с помощью preg_replace

Привет имейте следующее содержание в странице HTML, которая расширяет несколько строк

<div class="c-fc c-bc" id="content">
                <span class="content-heading c-hc">Heading 1 </span><br />
                The Home Page must provide a introduction to the services provided.<br />
                <br />
                <span class="c-sc">Sub Heading</span><br />
                The Home Page must provide a introduction to the services provided.<br />
                <br />
                <span class="c-sc">Sub Heading</span><br /> 
                The Home Page must provide a introduction to the services provided.<br />
            </div>

Я должен заменить все между <div class="c-fc c-bc" id="content"> и </div> с пользовательским текстом

Я использую следующий код для выполнения этого, но он не хочет работать, если это - несколько строк, но работает, если evertinh находится в одной строке

$body = file_get_contents('../../templates/'.$val['url']);

$body = preg_replace('/<div class=\"c\-fc c\-bc\" id=\"content\">(.*)<\/div>/','<div class="c-fc c-bc" id="content">abc</div>',$body);

Я пропускаю что-то?

11
задан hakre 12 July 2012 в 17:07
поделиться

2 ответа

Если это не HTML, я бы сказал вам использовать Модификатор dotall для изменения значения . От «Соответствует всему, кроме новой строки», чтобы соответствовать всему:

preg_replace('/(.*)<\/div>/s','abc',$body);

, но это HTML, поэтому вместо этого используйте парсер HTML.

26
ответ дан 3 December 2019 в 01:24
поделиться

Это флаг «S», он позволяет. Для захвата новых линий

15
ответ дан 3 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: