<?php
$s = "<qu>a<qu>b</qu>c</qu>d<qu>e<qu>f<qu>g</qu>h<qu>i</qu>j</qu></qu>";
preg_match_all("/<qu>[^<]+<\/qu>/U",$s,$r);
print_r($r);
?>
$s = "<qu>a<qu>b</qu>c</qu>d<qu>e<qu>f<qu>g</qu>h<qu>i</qu>j</qu></qu>";
preg_match_all("/<qu>[^<]+<\/qu>/U",$s,$r);
print_r($r);
?>
不行啊!
如果
$s = "<qu>a<qu>b<f></qu>c</qu>d<qu>e<qu>f<qu>g</qu>h<qu>i</qu>j</qu></qu>";
就出错了,不能正确解析出
“<qu>b<f></qu>”
要求匹配如下类型的字符串
"<x>?</x>"
"<x>?<x>?</x>?</x>"
"<x>?<x>?<x>?</x>?</x>?</x>"
等等……
打开标记和关闭标记之间可以出现任意字符串(我用"?"表示任意字符串,包括空串),
并且打开标记和关闭标记可以嵌套任意多层。