Php 如何按选定的html标记分解字符串
我需要按所选标记分解包含(无效)HTML的字符串-Php 如何按选定的html标记分解字符串,php,dom,explode,Php,Dom,Explode,我需要按所选标记分解包含(无效)HTML的字符串-,,。若嵌套了任何标记,则字符串应仅由第一个标记分解 插入的输入: <div id="main"> <h1 id="heading">Heading h1</h1> <p> <ol> <li>abc</li> <li>def</li> <li>ghi</li> </o
,,
。若嵌套了任何标记,则字符串应仅由第一个标记分解
插入的输入:
<div id="main">
<h1 id="heading">Heading h1</h1>
<p>
<ol>
<li>abc</li>
<li>def</li>
<li>ghi</li>
</ol>
Lorem ipusm lorem ipsum Lorem ipusm lorem ipsum Lorem ipusm lorem ipsum Lorem ipusm.
</p>
<p>Test test test test test</p>
<ul>
<li>aaa</li>
</ul>
</div>
品目h1
abc
def
ghi
Lorem ipusm Lorem ipsum Lorem ipusm Lorem ipsum Lorem ipusm Lorem ipsum Lorem ipsum Lorem ipusm。
测试测试
- aaa
导出的输出:
$output[0] = '<div id="wrapp"><h1 id="heading">Heading h1</h1>';
$output[1] = '<p><ol><li>abc</li><li>def</li><li>ghi</li></ol>Lorem ipusm lorem ipsum Lorem ipusm lorem ipsum Lorem ipusm lorem ipsum Lorem ipusm.</p>';
$output[2] = '<p>Test test test test test</p>';
$output[3] = '<ul><li>aaa</li></ul></div>';
$output[0]=“标题h1”;
$output[1]='abc def ghiLorem ipusm Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum.';
$output[2]='测试'';
$output[3]='- aaa
';
我尝试了一些DOM库,但没有人不能满足我的需要。最大的问题是分割div#main元素和嵌套标记(无效的html)。我很感激你的任何想法。你可以使用像
这样的正则表达式,这有什么用?不管它是什么,都可以用DOMDocument完成。XY问题?由于翻译成不同的语言(整个想法有点复杂),我需要将长字符串分解成较短的片段。例如,我尝试了Ganon库,它的问题在部分。Ganon返回我->和->,这是错误的-它应该是->->。谢谢,我修复了一些错误,但基本上它是按我需要的方式工作的。我只是担心它的速度,当非常大的字符串进来。这是可运行的版本:$output=$match=array()$正则表达式/
$html = "<div id="wrapp"><h1 id="heading">Heading ...";
$output = $match = array();
$regex = '<(p|h[1-6]|ul|ol|table)';
while(preg_match($regex, $html, $match, PREG_OFFSET_CAPTURE)){
$endTag = '</' . $match[1][0] '>';
$endPosition = strpos($html, $endTag)
$output[] = substr($html, 0 , $endPosition);
$html = substr($html, $endPosition + strlen($endTag));
}