Возможный дубликат:
Как анализировать и обрабатывать 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?
Если вы уверены в структуре 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);?>