将HTML元素解析成部分[重复]

Posted

技术标签:

【中文标题】将HTML元素解析成部分[重复]【英文标题】:Parsing HTML element into parts [duplicate] 【发布时间】:2017-01-07 04:07:36 【问题描述】:

我正在尝试解析以下代码:

<table border="0" cellpadding="0" cellspacing="0"   id="bodyTable" style="table-layout: fixed;max-width:100% !important;width: 100% !important;min-width: 100% !important;">

基本上我需要的是:

Array
(
    [0] => <table
    [1] => border="0"
    [2] => cellpadding="0"
    [3] => cellspacing="0"
    [4] => 
    [5] => 
    [6] => id="bodyTable"
    [7] => style="table-layout: fixed;max-width:100% !important;width: 100% !important;min-width: 100% !important;
)

但是,当使用简单的 explode(" ", $str); 执行此操作时,我的“样式”也被拆分了,是否有一种简单的方法来解析并循环遍历它?

【问题讨论】:

如果您在explode() 中使用空格作为分隔符,请从style 属性中删除空格。 如果您只是在寻找一个快速破解的解决方案,您也可以尝试正则表达式。 php.net/manual/en/function.explode.php @kooKooDoneSlapHisWife 你会如何建议这样做?我遇到的另一个问题是可能有一个 class="v1 v2.." 我想保留但按正确的顺序爆炸。 @SauliusAntanavicius 使用preg_match_all 和这个正则表达式:regex101.com/r/rR1bX0/2 ...我不宽恕这个,但我无法抗拒:) 【参考方案1】:

试试这个:

$result = array ();
$str = '<table border="0" cellpadding="0" cellspacing="0"   id="bodyTable" style="table-layout: fixed;max-width:100% !important;width: 100% !important;min-width: 100% !important;">';
$str_arr = explode (' style', $str);
$result = explode (' ', $str_arr[0]);
array_push($result, 'style'.$str_arr [1]);

echo '<pre>';
print_r($result);

【讨论】:

以上是关于将HTML元素解析成部分[重复]的主要内容,如果未能解决你的问题,请参考以下文章

HTML / CSS需要帮助在两个元素之间创建下划线[重复]

iOS - 将数组元素的一部分转换为字符串

如何在分隔字符串的第一个元素上找到部分重复项?

回流和重绘

使用 css 复制 html 元素

Python 实现快排