У меня есть HTML-код, и я столкнулся с проблемой парсинга данных из этого HTML-кода именно из приведенной ниже части:
<li id=xyz>
John Johnson
<sup>1<sup>
","</li>
Я хочу извлечь «Джон Джонсон» из этого списка и ничего больше. Не уверен, как это сделать. Благодарю.
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
Для более подробной информации проверьте Руководство
Окружите контент, который вам нужен, примерно так.
хороший вариант по сравнению с
<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);
Используя простой javascript, вы можете указать класс или идентификатор для span и получить его из javascript.
<span id="grabIt">John Johnson</span>
И ваш javascript:
Var john=document.getElementById("grabIt").innerText;