2017-11-14 9 views
1

私が持っているショートコードタグから属性を解析しようとしています。私が始めている文字列はこのように見えます。Preg_Splitは区切り文字を保持していません

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

私はそこにALMOSTを取得しています。

$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"" 

私はちょうどそれが完璧になる秒1と同様のhrefに終了引用符を持っていた場合は、上記を参照することができます。しかし、それはdelimeterをキャプチャしていません。

私が得ることができるすべてのヘルプに感謝します。前もって感謝します。

+0

[ ' '/\s+(?=\w+=["\'])/''](https://ideone.com/NWo640を生み出す

<?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"; } } ?> 

)。 –

+0

'(?<=")\ s +(?= \ S) 'で分割しますが、代わりにXMLパーサーを使用することをお勧めします。 HTMLタグから属性を取得しているようですが、パーサを使用するだけです。 – ctwheels

+3

[Shortcodeのような[Parse Wordpressのような構文解析]]の可能な複製(https://stackoverflow.com/questions/15735258/parse-wordpress-like-shortcode) – ctwheels

答えて

0

これははるかに美しいですか?

Attribute 'href': 'https://example.com' 
Attribute 'class': 'bootstrap class names' 
あなたが使用すること
+1

なぜdownvote?これは、XMLまたはHTMLを解析する適切な方法です。あなたはこれを行うために正規表現を使用しません。 – ctwheels

+0

OPにhtmlがありますが、質問に記載されているような短いコードがあります。 – PeeHaa

+0

@PeeHaa「ショートコードタグから属性を解析しようとしています」 - OPがこれをやろうとしていることは明らかです。 – ctwheels

関連する問題