0

这是我的问题的文本示例:

The <tag1>quick brown fox</tag1> <tag2>jumps over</tag2> the lazy <tag1>dog</tag1>

我可以这样做:

array_text[0] => The
array_text[1] => <tag1>quick brown fox</tag1>
array_text[2] => <tag2>jumps over</tag2>
array_text[3] => the
array_text[4] => lazy
array_text[5] => <tag1>dog</tag1>

我相信这可以用正则表达式来完成(也许)。但是不知道有没有更好的方法。真的,我不擅长正则表达式。

请帮助,提前谢谢。

4

1 回答 1

0

抱歉,我刚刚意识到,我从上一个问题中得到了答案:Count Words on XML Text Using PHP

我只是添加了一点代码,所以我可以得到像这个问题这样的输出,这里是代码:

$xml_text = 'The <tag1>quick brown fox</tag1> <tag2>jumps over</tag2> the lazy <tag1>dog</tag1>';

$doc    = new DOMDocument();
$result = $doc->loadXML(sprintf('<root>%s</root>', $xml_text));

function utf8_count_words($string) {
    return (int)str_word_count($string);
}

$word_count = 0;
$array_text = array();
$i = 0;
foreach ($doc->documentElement->childNodes as $node) {
    switch ($node->nodeType) {
        case XML_ELEMENT_NODE:
            $array_text[$i] = "<".$node->nodeName.">".$node->nodeValue."</".$node->nodeName.">";
            $i++;
            break;
        case XML_TEXT_NODE:
            $data_split = explode(" ", $node->data);
            for ($j=0; $j<count($data_split) ; $j++) { 
                if ($data_split[$j] != "") {
                    $array_text[$i] = $data_split[$j];
                    $i++;   
                }
            }
            break;
        default:
            throw new Exception(sprintf('Unexpected nodeType in XML-text: %d', $node->nodeType));
    }
}

var_dump($array_text);

感谢您的关注。:D

于 2013-07-17T04:27:48.067 回答