Мне нужна небольшая помощь для поиска содержимого внутри определенных и тегов.
Пример:
$string = '<a href="dummyurl">TEXT</a><span>Other Text</span>';
Я бы хотел найти «ТЕКСТ» и заменить его другим значением. Obviuosly динамически генерируется содержимое «href» и «TEXT».
Если вы уверены, что в стартовом теге нет символа >
(за исключением очевидного 1):
preg_match('/<a[^>]*>(.*?)<\/a>/i', $string, $matches);
Ссылка: Текст ссылки phppro.org
$doc = new DOMDocument; $doc->loadHTML('<a href="dummyurl">TEXT</a><span>Other Text</span>'); $anchors = $doc->getElementsByTagName('a'); $len = $anchors->length; for($i = 0; $i < $len; $i++) { if($anchors->item($i)->nodeValue == 'foo') { $anchors->item($i)->nodeValue = 'New Value'; $anchors->item($i)->setAttribute('href', 'new href'); } } $newHTML = $doc->saveHTML(); echo $newHTML;
Подумайте об изучении DOM, который позволит вам работать как с документами HTML, так и с XML, и отвечать на такие вопросы в общих чертах. Существует некоторая кривая обучения, и она будет медленнее, чем тонко настраиваемые локальные регулярные выражения, но она будет более надежной и применимой ко всему, что является HTML или XML-документом.
PHP имеет большой раздел по использованию DOM в PHP в руководстве .