У меня есть строка, содержащая HTML, составленный в текстовом редакторе. Что-то вроде:
$string ='<img src="http://example.com/image.jpg" alt="alt text" width="1200" height="1650" class="full">
Lorem ipsum <a href="example.com">ergo</a> ipsum';
Другие времена, как:
$string ='<iframe src="http://example.com/" width="1200" height="1650" class="full"></iframe>
<b>Lorem ipsum <a href="example.com">ergo</a> ipsum</b>'
Каким-то образом мне нужно разделить мультимедиа и текст на отдельные, но мне не разрешено изменять способ ввода содержимого в строку.
В идеале я бы ограничил все медиа в отдельном поле, но я не могу сделать это по нескольким причинам.
Я пытаюсь что-то решить с помощью регулярных выражений, но я не могу заставить его работать.
Самым близким, что я получил, было удаление тегов, но это не избавляет от текста:
echo '<div class="media">'.strip_tags($sting, '<img><iframe>').'</div><br>';
echo '<div class="text">'.strip_tags($string, '<p><a><b><stong>').'</div>';
Есть идеи? Там может быть действительно четкое решение там ..
Не был уверен, что под медиа вы подразумевали значение параметра src или тип тега, но вот регулярное выражение для любого из них:
// result will be in $matches[1][0]
preg_match_all( '/src=\"(.*)\"/sU', $string, $matches );
preg_match_all( '/<(img|iframe)\s/sU', $string, $matches );
Других решений пока нет …