从html查找所有单词(或句子)

时间:2019-04-09 17:13:14

标签: php simple-html-dom

我正在尝试查找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做错了什么,并帮助我弄清楚每个单词的开头位置吗?还是告诉我应该使用的另一种工具?

1 个答案:

答案 0 :(得分:-1)

您可以使用可用功能strip_tagpreg_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
            )

    )

)