这是我问题的文字示例:
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>
我相信这可以通过正则表达式(也许)来完成。但我不知道是否还有其他更好的方法。真的,我在正则表达方面不擅长。
请提前帮助,谢谢。
答案 0 :(得分: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