PHP使用已知属性获取元素

时间:2012-06-04 08:38:40

标签: php loops

所以我想说:

<?php
    $template = '<img src="{image}" editable="all image_all" />';
    $template .= '<div>';
    $template .= '<img src="{image}" editable="yes" />';
    $template .= '</div>';
?>

现在我想要的是让脚本遍历包含{image} src的所有元素并检查其中是否有任何元素

editable="all" 

属性。

如果是这样:获取第二个可编辑属性,例如

image_all

并将其包含在src中。

3 个答案:

答案 0 :(得分:1)

使用评论Simple HTML DOM Parser上建议的库:

可以简化此任务

这很容易:

$images = array(); //an array for your images with {image} in src
$html = "...";
foreach($html->find('img') as $element)
    if($element->src == '{image}') {
        //add to the collection
        $images[] = $element;
    }
    //Also you can compare for the editable attribute same way as above.
}

答案 1 :(得分:0)

如果你想获得第二个可编辑的attr并将其保存在像$ src这样的数组中,请检查以下代码:

$content=new DOMDocument();
$content->loadHTML($template);
$elements=simplexml_import_dom($content); 
$images=$elements->xpath('//img');
foreach ($images as $img) {
    if(preg_match('/all /i', $img['editable']))
        $src[]=substr($img['editable'],4) ;
}
print_r($src);

将输出:

Array ( [0] => image_all )

答案 2 :(得分:0)

试试这个,

  include('simple_html_dom.php');
  $html = str_get_html('<div><img src="{image}" editable="all image_all" /><img src="{image}" editable="yes" /></div>');
  $second_args= array();
  foreach($html->find('img[src="{image}"]') as $element){ 
    $editables = explode(' ',$element->editable); 
    if($editables[0] === "all"){ 
        $second_args[] = $editables[1];
    }
  }
  print_r($second_args);