Я пытаюсь взять контент <svg>
из HTML и поместить его в массив для последующего использования. Мой код ...getElementsByTagName не обнаруживает SVG - PHP
$html_content = '
<div class="stage" id="shape_1"><svg height="100" version="1.1" width="350" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; left: -0.316681px; top: -0.650024px;"><desc>Created with Raphaël 2.1.2</desc><defs/><rect x="75" y="25" width="200" height="50" r="0" rx="0" ry="0" fill="#90ee90" stroke="#000" style="fill-opacity: 0.5;" fill-opacity="0.5" stroke-width="0"/><path style="stroke-opacity: 0.8;" fill="none" stroke="#666666" d="M75,25L275,25" stroke-width="2" stroke-opacity="0.8"/><path style="stroke-opacity: 0.8;" fill="none" stroke="#666666" d="M275,25L275,75" stroke-width="2" stroke-opacity="0.8"/><path style="stroke-opacity: 0.8;" fill="none" stroke="#666666" d="M275,75L75,75" stroke-width="2" stroke-opacity="0.8"/><path style="stroke-opacity: 0.8;" fill="none" stroke="#666666" d="M75,75L75,25" stroke-width="2" stroke-opacity="0.8"/><text style="text-anchor: middle; font: 15px Arial;" x="175" y="85" text-anchor="middle" font="10px "Arial"" stroke="none" fill="#000000" transform="matrix(1,0,0,1,0,6.5)" font-family="Arial" font-size="15px" font-style="normal" font-weight="normal"><tspan dy="5">x + 10 ft.</tspan></text><text style="text-anchor: end; font: 15px Arial;" x="65" y="50" text-anchor="middle" font="10px "Arial"" stroke="none" fill="#000000" font-family="Arial" font-size="15px" font-style="normal" font-weight="normal"><tspan dy="5">x ft.</tspan></text></svg></div>';
$doc = new DOMDocument();
$doc->loadHTML($html_content);
$svg = $doc->getElementsByTagName('svg');
foreach ($svg as $svg_item) {
array_push($svg_array, $svg_item);
}
print_r($svg_array);
Проблема заключается в том, что $svg_array
пуста. Я знаю, что есть <svg>
контент в $html_content
.
BTW, я получаю несколько предупреждений на странице в целом (поскольку я выполняю приведенный выше код в цикле). Они, как ...
"Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: Неожиданный конечный тег: DIV в Entity, строка: 46 в ..."
или
"Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: Метка с недействительным в Сущности, строка: 119 в ..."
Edit: при более глубоком исследовании, урезанная версия мой код выдает следующие предупреждения ...
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: Tag SVG недействителен в Сущности, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml] : Тег desc недействителен в Entity, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: тег defs недействителен в Entity, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: Tag прямоугольник недействительным в Сущности, строка: 2 в .....
Предупреждение: DOMDoc ument :: loadHTML() [domdocument.loadhtml]: Недопустимый путь тега в Entity, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: путь тега недействителен в Entity , линия: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: путь Тэг недействительным в Сущности, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: путь тега недействителен в Entity, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: текст тега недействителен в Entity, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: Tag tspan недействительным в Entity, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml] : Текст тега недействителен в объекте, строка: 2 в .....
Предупреждение: DOMDocument :: loadHTML() [domdocument.loadhtml]: тег tspan недействителен в Entity, строка: 2 в .....
Возможно, <svg>
не поддерживается ????
Мысли?
Да, вы должны как минимум добавить код к вопросу (или вырезать копию, которая показывает ту же проблему). Это действительно звучит очень ужасно, как html искажен. Хотя вы знаете, что $ htmlContent содержит что-то, откуда вы знаете, что он даже загружен должным образом и передает его объекту $ doc? – enhzflep
@enhzflep: Я выводил его, и надлежащее содержимое отображалось надлежащим образом. – gtilflm
Вы были здесь достаточно долго, чтобы знать, чем всегда рекомендуется MCVE. Если вы решите не предоставлять один, не удивляйтесь, если читатели предпочитают не отвечать на ваш вопрос. : shrugs: http://stackoverflow.com/help/mcve – enhzflep