是否有任何簡單的方法可以在具有格式錯誤的XML的2個標記之間查找文本並忽略嵌套?在格式不正確的XML和包含嵌套標記的2個標記之間查找文本
鑑於此內容:
<div>
Some content 1
</
<some:tag>
Section 1
</some:tag>
<b>Some content 2
<some:tag>
Section 2
<some:tag>
Section 3
</some:tag>
</some:tag>
Some content 3
</p>
</div>
注:這是故意畸形。我不能/不想使用正確的HTML/XML解析器,因爲我的內容沒有正確形成,或者在某些情況下甚至不是XML。同樣,我不能/不希望對它進行整理,因爲它並不總是HTML/XML。
所以我需要找到<some:tag>
和</some:tag>
之間的文本,包括嵌套標籤。
內容上面會導致:
array (size=2)
0 => string '<some:tag>
Section 1
</some:tag>' (length=52)
1 => string '<some:tag>
Section 2
<some:tag>
Section 3
</some:tag>
</some:tag>' (length=125)
強制性你嘗試過什麼:
我一直在使用strpos/SUBSTR退出比賽試過,但我得到一個有點失去了邏輯:
function findSomeTag($str) {
$result = [];
$startTag = "<some:tag>";
$endTag = "</some:tag>";
$offset = 0;
$start = strpos($str, $startTag, $offset);
while ($start !== false) {
$nextStart = strpos($str, $startTag, $start + 1);
$nextEnd = strpos($str, $endTag, $start + 1);
if ($nextStart === false || $nextEnd < $nextStart) {
$result[] = substr($str, $start, $nextEnd - $start + strlen($endTag));
}
$start = $nextStart;
}
return $result;
}
(注:上面的功能完全不工作,並可能會無限循環)
似乎工作,雖然我結束了這個:http://stackoverflow.com/a/23796360/268074 – Petah