我正在尝试查找html块中的所有单词。读manual我认为可以通过使用find('text')
函数来实现。虽然我无法获得返回的任何内容。
有人可以告诉我我在做什么错吗?
require_once __DIR__ . '/simple_html_dom.php';
$html = str_get_html("<html><body><div><p><span>Hello to the <b>World</b></span></p><p> again</p></div></body></html>");
foreach($html->find('text') as $element) {
echo $element->plaintext . '<br>';
}
我最终想要做的是找到所有文本及其在html中的起始位置。对于此特定示例,它看起来像这样:
[
0 => [
'word' => 'Hello to the ',
'pos' => 27
],
1 => [
'word' => 'World',
'pos' => 43
],
2 => [
'word' => ' again',
'pos' => 66
]
]
那么有人可以向我解释我使用Simple HTML Dom做错了什么,并帮助我弄清楚每个单词的开头位置吗?还是告诉我应该使用的另一种工具?
答案 0 :(得分:-1)
您可以使用可用功能strip_tag
,preg_match_all
提取每个单词的位置
$str = "<html><body><div><p><span>Hello to the <b>World</b></span></p><p> again</p></div></body></html>";
$find = '/'.str_replace(' ','|',strip_tags($str)).'/';
preg_match_all($find, strip_tags($str), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
结果:-
Array
(
[0] => Array
(
[0] => Array
(
[0] => Hello
[1] => 0
)
[1] => Array
(
[0] => to
[1] => 6
)
[2] => Array
(
[0] => the
[1] => 9
)
[3] => Array
(
[0] => World
[1] => 13
)
[4] => Array
(
[0] => again
[1] => 19
)
)
)