2012-05-06 2 views
-1

У меня есть div под названиемЗаменить содержимое внутри DIV

<div id="form">Content</div> 

, и я хочу, чтобы заменить содержимое div с новым содержанием, используя Preg_replace. какое Regex следует использовать.?

+1

Это описано миллион раз. Не используйте Regex для работы с HTML. Используйте DOMDocument или какой-либо другой парсер HTML. –

+1

Возможный дубликат [Регулярное выражение для получения содержимого div-класса в php] (http://stackoverflow.com/questions/3446766/regular-expression-to-get-contents-of-div-class-in-php) – mario

ответ

0

You shouldn't be using a regex at all. HTML может прийти во многих формах, и вам нужно будет взять их все на учет. Что делать, если id/class не приходит туда, где вы ожидаете? Регулярное выражение должно быть действительно сложным, чтобы получить разумные результаты.

Вместо этого вы должны использовать парсер DOM - или действительно классный инструмент, который я недавно наткнулся, phpQuery. С его помощью вы можете получить доступ к своему документу на PHP почти точно так же, как и с jQuery.

+2

-1 Датированные страницы шуток не дают хороших пояснительных ссылок. (Вы должны прочитать название, по крайней мере, и мимо ответов без ответа, btw). У нас, конечно, есть что-то более разумное. – mario

+0

@mario: Я согласен, что ссылка устарела и лаконична, но это проблема, которая не стареет. Я попытался найти более серьезный ответ, но это довольно сложно, потому что у SO нет поиска «сортировка по наилучшему результату ответа». Если вы обнаружите, что не стесняйтесь его менять. – Kaivosukeltaja

-1

Это будет работать в вашем случае:

$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> 
Смежные вопросы