Intereting Posts
Защита аудиофайлов в аудиотегах HTML5 Что такое Заголовок Прагмы? Кэширование страниц .. и IE Как структурировать этот веб-проект Symfony? Как экспортировать строку Base64 в файл на стороне сервера, не сохраняя его на веб-сервере, напрямую с помощью PHP? Как преобразовать все изображения в формат JPG в PHP? Может возникнуть символ «backspace» PHP во время выхода? Программно определить, следует ли описывать объект с помощью «a» или «an»? Как вызвать функцию в PHP в другой форме? Обновите содержимое div только в том случае, если в базу данных добавлен новый контент Почему «www.example.com» не совпадает с «example.com»? Flowplayer Secure Streaming с Apache Где ошибка в этом PHP-коде? Как установить значение по умолчанию для «Сохранить изображение как» для изображения, сгенерированного в PHP? Является ли дизайн PHP, Python, PostgreSQL подходящим для бизнес-приложения? PHP-скрипт не запущен в браузере

Как вставить строку текста после абзацев X фрагмента html?

Возможный дубликат:
Как анализировать и обрабатывать HTML с помощью PHP?

$content = " <p>This is the first paragraph</p> <p>This is the second paragraph</p> <p>This is the third paragraph</p>"; 

Учитывая строку содержимого html, как указано выше, мне нужно сделать вставку после тега абзаца N'th.

Как я могу анализировать содержимое и вставлять заданную строку текста, например «hello world» после параграфа 2?

Solutions Collecting From Web of "Как вставить строку текста после абзацев X фрагмента html?"

Если вы уверены в структуре HTML своей строки, вы можете подсчитать видимые абзацы в статической переменной обратного вызова.

 $content = preg_replace_callback('#(<p>.*?</p>)#', 'callback_func', $content); function callback_func($matches) { static $count = 0; $ret = $matches[1]; if (++$count == 2) $ret .= "<p> Additional paragraph</p>"; return $ret; } 

Обратите внимание, что это решение не является реентерабельным, это всего лишь концепция.

Вы можете использовать функции PHP для взрыва и вложения . Вот концепция:

 $content = " <p>This is the first paragraph</p> <p>This is the second paragraph</p> <p>This is the third paragraph</p>"; $content_table = explode("<p>", $content); 

Это создаст $content_table со значениями:

 Array ( [0] => [1] => This is the first paragraph [2] => This is the second paragraph [3] => This is the third paragraph ) 

Теперь вы можете изменить все, что хотите, используя $content_table[2] для параграфа 2. Например, вы можете:

 $content_table[2] .= "hello world!"; 

Когда все будет готово, просто снова вставьте таблицу в строку:

 $content = implode($content_table, "<p>"); 

функция может помочь str_replace ()

http://php.net/manual/es/function.str-replace.php

 <? str_replace('<p>This is the second paragraph</p>','<p>This is the second paragraph</p> hello world', $content);?>