Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex使用PHP拆分文本上的任何XML标记_Php_Xml_Regex_Text - Fatal编程技术网

Regex使用PHP拆分文本上的任何XML标记

Regex使用PHP拆分文本上的任何XML标记,php,xml,regex,text,Php,Xml,Regex,Text,这是我的问题的文本示例: 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_tex

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

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>
array\u text[0]=>
数组_text[1]=>quick brown fox
数组_text[2]=>跳过
数组_text[3]=>
数组_text[4]=>lazy
数组_text[5]=>dog
我相信这可以通过正则表达式实现(也许)。但我不知道是否还有更好的方法。真的,我不擅长正则表达式


请帮助,提前谢谢。

很抱歉,我刚刚意识到,我从上一个问题中得到了答案:

我只是添加了一点代码,这样我就可以得到这样的问题,下面是代码:

$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);
$xml_text='敏捷的棕色狐狸跳过了懒狗';
$doc=新的DOMDocument();
$result=$doc->loadXML(sprintf('%s',$xml\u text));
函数utf8\u count\u words($string){
返回(int)str_word_count($string);
}
$word\u count=0;
$array_text=array();
$i=0;
foreach($doc->documentElement->childNodes作为$node){
开关($node->nodeType){
案例XML_元素_节点:
$array_text[$i]=“”.$node->nodeValue。“”;
$i++;
打破
案例XML_文本_节点:
$data\u split=explode(“,$node->data);
对于($j=0;$jnodeType));
}
}
变量转储($array\u text);

谢谢你的关注D

你的3和4没有任何xml为什么要拆分我相信他是按空格拆分的,除非在标记内如果它是有效的xml,那么有太多的扩展可供选择:对不起,我的问题没有完成。纯文本也被拆分了,所以我认为正则表达式是检测空格“,”字符来拆分它们的。XML有多复杂?使用正则表达式解析复杂的嵌套XML(或HTML)非常复杂,而且容易出错,因此在一般情况下,始终使用XML解析器。但是,如果字符串仅与示例一样复杂,则正则表达式可能有意义。