Preg_Split没有保留分隔符

时间:2017-11-14 20:12:36

标签: php regex preg-split

我正在尝试从我拥有的短代码标记中解析属性。我开始的字符串看起来像这样。

href="https://example.com" class="bootstrap class names"

我正在使用这个表达式,它让我在那里几乎没有。

$attribute_dna = '/"\s/';
$attributes = preg_split($attribute_dna, $attributes_string, null, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);

我得到的输出就是这个......

string(27) "href="https://example.com"  <--Problem is right here (missing a quote)
string(17) "class="bootstrap class names""

你可以在上面看到,如果我在href上有结尾引用,就像第二个那样完美。但它并没有捕获分界仪。

我很感激能得到的任何帮助。提前致谢。

1 个答案:

答案 0 :(得分:0)

这不是更漂亮吗?

<?php

$html = <<<DATA
<div>
    <a href="https://example.com" class="bootstrap class names">Some link here</a>
</div>
DATA;

# set up the DOM
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);

# set up the xpath
$xpath = new DOMXPath($dom);

foreach ($xpath->query("//a") as $link) {
    foreach ($link->attributes as $attr) {
        $name = $attr->nodeName;
        $value = $attr->nodeValue;
        echo "Attribute '$name': '$value'\n";
    }
}
?>

哪个收益

Attribute 'href': 'https://example.com'
Attribute 'class': 'bootstrap class names'