2016-07-04 23 views
-1
<div id="plugin-description"> 
    <p itemprop="description" class="shortdesc"> 
     BuddyPress helps you build any type of community website using WordPress, with member profiles, activity streams, user groups, messaging, and more. </p> 
    <div class="description-right"> 
       <p class="button"> 
      <a itemprop="downloadUrl" href="https://downloads.wordpress.org/plugin/buddypress.2.6.1.1.zip">Download Version 2.6.1.1</a> 

我需要說明只是這個代碼如何設置該字符串創建正則表達式

<p itemprop="description" class="shortdesc">[a-z]</p> 

我需要下載鏈接

<a itemprop="downloadUrl" href="[A-Z]"></a> 
+3

不要用正則表達式解析html。使用解析器。 –

回答

0

而且once again

<?php 

$data = <<<DATA 
<div id="plugin-description"> 
    <p itemprop="description" class="shortdesc"> 
     BuddyPress helps you build any type of community website using WordPress. 
    </p> 
    <div class="description-right"> 
     <p class="button"> 
      <a itemprop="downloadUrl" href=".zip">Download Version 2.6.1.1</a> 
     </p> 
    </div> 
</div> 
DATA; 

$dom = new DOMDocument(); 
$dom->loadHTML($data); 

$xpath = new DOMXPath($dom); 
$containers = $xpath->query("//div[@id='plugin-description']"); 

foreach ($containers as $container) { 
    $description = trim($xpath->query(".//p[@itemprop='description']", $container)->item(0)->nodeValue); 
    $link = $xpath->query(".//a[@itemprop='downloadUrl']/@href", $container)->item(0)->nodeValue; 
    echo $description . $link; 
} 

?> 

a demo on ideone.com

+0

@Oms:查看更新的答案和演示鏈接。 – Jan

0

解析HTML比正則表達式有更好的工具。也就是說,有些時候用正則表達式解析HTML是安全和一致的,所以不要因爲嘗試它而被欺負。這些情況通常用於很小的,已知的HTML標記集。

對於這種特殊情況,似乎使用HTML解析器會有效,給您留下更清晰的代碼。爲了說明這一點,我將使用像pup這樣的命令行工具,它將幫助您非常簡單地檢索您的內容。假設計算機上的標記存儲在/tmp/input處。

downloadUrl ...

pup < /tmp/input 'a[itemprop="downloadUrl"] attr{href}' 

description ...

pup < /tmp/input 'p[itemprop="description"] text{}' 

此我想說明的簡單性和使用的HTML解析器的好處抓住你」重新過後。

相關問題