我想用PHP从字符串中获取HTML属性,但是失败了:
$string = '<ul id="value" name="Bob" custom-tag="customData">';
preg_filter("/(\w[-\w]*)=\"(.*?)\"/", '$1', $string ); // returns "<ul id name custom-tag"
preg_filter("/(\w[-\w]*)=\"(.*?)\"/", '$1', $string ); // returns "<ul value Bob customData"我想返回的是:
array(
'id' => 'value',
'name' => 'Bob',
'custom-tag' => 'customData'
);发布于 2014-03-22 14:22:18
HTML不是一种常规语言,不能用正则表达式正确地解析。使用DOM解析器代替。下面是一个使用PHP内置DOMDocument类的解决方案:
$string = '<ul id="value" name="Bob" custom-tag="customData">';
$dom = new DOMDocument();
$dom->loadHTML($string);
$result = array();
$ul = $dom->getElementsByTagName('ul')->item(0);
if ($ul->hasAttributes()) {
foreach ($ul->attributes as $attr) {
$name = $attr->nodeName;
$value = $attr->nodeValue;
$result[$name] = $value;
}
}
print_r($result);输出:
Array
(
[id] => value
[name] => Bob
[custom-tag] => customData
)https://stackoverflow.com/questions/22578718
复制相似问题