Я хочу разобрать какой-то HTML-код, отправленный ckeditor.HTML-код, который публикуется, выглядит следующим образом:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">#012<html><body><p>Text Before <img alt="HAMBURGER" height="20" src="/sites/all/modules/ckeditor/plugins/apoji/images/emoji-E120.png" title="HAMBURGER" width="20"> Text After</p></body></html>
(отформатирован, не требуя соответствия):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<body>
<p>
Text Before
<img alt="HAMBURGER" height="20" src="/sites/all/modules/ckeditor/plugins/apoji/images/emoji-E120.png" title="HAMBURGER" width="20">
Text After
</p>
</body>
</html>
Я искал использовать что-то вроде следующего:
$DOM = new DOMDocument;
$DOM->loadHTML($input);
$items = $DOM->getElementsByTagName('*');
foreach ($items as $item) {
switch ($item->nodeName) {
case "p":
$sms .= $item->nodeValue."\n";
break;
case "img":
$img_out .= "IMG Attr: ".$item->getAttribute('title')."\n";
break;
}
}
Моя цель - создать простую текстовую строку, заменив изображение на основе его заголовка, поэтому у меня будет такая строка:
Text Before HAMBURGER Text After
Я начал спускатьсяМаршрут DOM, как кажется, лучший способ сделать это, но теперь у меня есть два вопроса:
- Если я зациклюсь на документе, как указано выше, IMG заканчивается ПОСЛЕ текста, а не в серединеЭто.Как можно избежать этого?
- Лучший способ извлечь весь простой текст из документа DOM, сохраняя порядок элементов (связанный с пунктом 1).
Заранее спасиболюбому, кто может внести свой вклад в это.