Как разобрать список, используя простой HTML-дом

У меня есть HTML-код, и я столкнулся с проблемой парсинга данных из этого HTML-кода именно из приведенной ниже части:

<li id=xyz>
John Johnson
<sup>1<sup>
","</li>

Я хочу извлечь «Джон Джонсон» из этого списка и ничего больше. Не уверен, как это сделать. Благодарю.

-1

Решение

find('text') это то, что вы после. Возвращает все текстовые блоки, найденные в источнике.

На основе вашего примера вот рабочий код:

// Test data
$input = <<<_DATA_
<li id=xyz>
John Johnson
<sup>1<sup>
","</li>
_DATA_;

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($input);

// >> Long answer
echo "Long answer:<br/>";

// Search all text nodes inside the target node
$search = $html->find('li#xyz text');

// Loop through each node and print it
foreach( $search as $i => $txt ) {
// No need to specify "->plaintext" since the content is already in plain text here
echo "$i => " . $txt->plaintext . "<br/>";
}

// >> Short answer
echo "<hr>";
echo "Short answer:<br/>";

// Specifying the index (0th here) returns the Nth element from the array containing all search results
echo $html->find('li#xyz text', 0)->plaintext;

// Clear DOM object
$html->clear();
unset($html);

ВЫХОД:

Long answer:
0 => John Johnson
1 => 1
2 => ","3 =>
-------------------
Short answer:
John Johnson

Для более подробной информации проверьте Руководство

1

Другие решения

Окружите контент, который вам нужен, примерно так.
хороший вариант по сравнению с

<li id='xyz'>
<span>John Johnson</span>
<sup>1<sup>
","</li>

Затем на вашем JavaScript, если вы используете JQuery.

var contentToGrab =  $('#xyz span').text();
// just verify you get the data correctly
console.log(contentToGrab);
0

Используя простой javascript, вы можете указать класс или идентификатор для span и получить его из javascript.

<span id="grabIt">John Johnson</span>

И ваш javascript:

Var john=document.getElementById("grabIt").innerText;
0
По вопросам рекламы [email protected]