У меня есть div
под названиемЗаменить содержимое внутри DIV
<div id="form">Content</div>
, и я хочу, чтобы заменить содержимое div
с новым содержанием, используя Preg_replace
. какое Regex следует использовать.?
У меня есть div
под названиемЗаменить содержимое внутри DIV
<div id="form">Content</div>
, и я хочу, чтобы заменить содержимое div
с новым содержанием, используя Preg_replace
. какое Regex следует использовать.?
You shouldn't be using a regex at all. HTML может прийти во многих формах, и вам нужно будет взять их все на учет. Что делать, если id/class не приходит туда, где вы ожидаете? Регулярное выражение должно быть действительно сложным, чтобы получить разумные результаты.
Вместо этого вы должны использовать парсер DOM - или действительно классный инструмент, который я недавно наткнулся, phpQuery. С его помощью вы можете получить доступ к своему документу на PHP почти точно так же, как и с jQuery.
-1 Датированные страницы шуток не дают хороших пояснительных ссылок. (Вы должны прочитать название, по крайней мере, и мимо ответов без ответа, btw). У нас, конечно, есть что-то более разумное. – mario
@mario: Я согласен, что ссылка устарела и лаконична, но это проблема, которая не стареет. Я попытался найти более серьезный ответ, но это довольно сложно, потому что у SO нет поиска «сортировка по наилучшему результату ответа». Если вы обнаружите, что не стесняйтесь его менять. – Kaivosukeltaja
Это будет работать в вашем случае:
$html = '<div id="content">Content</div>';
$html = preg_replace('/(<\s*div[^>]*>)[^<]*(<\s*\/div\s*>)/', '$1New Content$2', $html);
echo $html; // <div id="content">New Content</div>
Однако обратите внимание, что поскольку HTML не является регулярным языком, невозможно обрабатывать все случаи. Простое регулярное выражение I предоставит плохой результат в следующем примере:
<div class=">">Content</div>
Это описано миллион раз. Не используйте Regex для работы с HTML. Используйте DOMDocument или какой-либо другой парсер HTML. –
Возможный дубликат [Регулярное выражение для получения содержимого div-класса в php] (http://stackoverflow.com/questions/3446766/regular-expression-to-get-contents-of-div-class-in-php) – mario