从html页面中提取div属性的一部分

时间:2016-02-02 08:31:01

标签: php html

我有一个html页面的这一部分:

<td>
  <div class='medals gold'> 
    </div> 
</td>

要提取并打印到视频div属性,我使用了这个PHP代码:

$div = $result->getElementByTagName('div');
echo $div->getAttribute('class') . " ";

通过这种方式,我得到了字符串medals gold

我真的只能提取子串gold吗? 这将是完美的。

3 个答案:

答案 0 :(得分:1)

您可以使用explode函数将字符串medals gold拆分为两个字符串array('medals', 'gold')的数组:

$div = $result->getElementByTagName('div');
$parts = explode(' ', $div->getAttribute('class'));
echo $parts[1];

答案 1 :(得分:1)

您可以使用preg_split并将空格分割为其他人建议的

/* it should be `getElementsByTagName`*/
$div=$result->getElementsByTagName('div')->item(0);

list( $junk, $keep )=preg_split('@\s@',$div->getAttribute('class') );
echo $keep;

/* or */
$divs=$result->getElementsByTagName('div');
foreach( $divs as $div ){
    list( $junk, $keep )=preg_split('@\s@', $div->getAttribute('class') );
    echo $keep;
}

答案 2 :(得分:0)

由于{5.3}中的split函数已被弃用,并且在PHP 7.0中也被删除了,因此我建议您使用explode

另外

  • explode()速度要快得多,因为它不会基于正则表达式进行拆分,因此字符串不必由正则表达式解析器进行分析
  • preg_split()更快,并使用PCRE正则表达式进行正则表达式拆分

所以,这将是更好的选择:

$div = $result->getElementByTagName('div');
$parts = explode(' ', $div->getAttribute('class'));
echo $parts[1];

您将获得包含2个字符串的数组。 //array('medals', 'gold')