Я довольно новичок в PHP и имею строку, содержащую HTML-страницу. Мне нужно будет вставить какой-то пользовательский код до и после любого HTML-тега HR . Пример:
<html> .... <p>INSERT HERE</p> <hr class="pagebreak"> <p>INSERT HERE</p> <p>INSERT HERE</p> <hr class="pagebreak"> <p>INSERT HERE</p> .... </html>
Я пробовал с несколькими комбинациями preg_replace и substr_replace , однако мне все еще не удалось вставить настраиваемый код во все нужные мне места. Кто-нибудь может помочь мне решить эту загадку? Ps Мне нужно использовать стандартные строковые функции PHP – я не могу использовать любую библиотеку разбора HTML, так как у меня нет контроля над библиотеками PHP, доступными на сервере. Большое спасибо Linda
Все, что вам нужно получить, – это хорошее регулярное выражение, предполагая, что вам удалось получить его работу хотя бы частично, у вас, возможно, было плохое выражение (пример поможет). Я тестировал этот код для вас, и он должен работать на всех ваших <hr>
s:
$newtext=preg_replace("#(<hr[^>]*>)#s",$yourprefix."\${1}".$yoursuffix,$oldtext);
переменная oldtext – это то, что было раньше, новый текст – это то, что вы хотите, а префикс и суффикс – это то, что вы хотите добавить вокруг тега hr
$before = '<p>Before the hr tag</p>'; $after = '<p>After the hr tag</p>'; $str = preg_replace('/(<hr(.*?)>)/i',$before.'$1'.$after,$str);