2011-01-16 58 views
7

Tôi có một chuỗi HTML mà tôi muốn kiểm tra xem có bất kỳ liên kết nào bên trong nó và, nếu có, hãy trích xuất chúng và đặt chúng vào một mảng. Tôi có thể làm điều này trong jQuery với sự đơn giản của các bộ chọn của nó nhưng tôi không thể tìm ra các phương thức thích hợp để sử dụng trong PHP.Thao tác chuỗi PHP: Extract hrefs

Ví dụ, chuỗi có thể trông như thế này:

<h1>Doctors</h1> 
<a title="C - G" href="linkl.html">C - G</a> 
<a title="G - K" href="link2.html">G - K</a> 
<a title="K - M" href="link3.html">K - M</a> 

thế nào (trong PHP) tôi có thể biến nó thành một mảng mà trông giống như sau:

[1]=>"link1.html" 
[2]=>"link2.html" 
[3]=>"link3.html" 

Cảm ơn, Ian

+0

trùng lặp có thể xảy ra của [Nắm lấy thuộc tính href của một Một yếu tố] (http://stackoverflow.com/questions/3820666/grabbing-the-href-attribute-of-an-a-element) – j08691

Trả lời

17

Bạn có thể sử dụng PHP DOMDocument thư viện để phân tích cú pháp XML và/hoặc HTML. Một cái gì đó như sau nên làm các trick, để có được các href thuộc tính từ một chuỗi các HTML.

$html = '<h1>Doctors</h1> 
<a title="C - G" href="linkl.html">C - G</a> 
<a title="G - K" href="link2.html">G - K</a> 
<a title="K - M" href="link3.html">K - M</a>'; 

$hrefs = array(); 

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

$tags = $dom->getElementsByTagName('a'); 
foreach ($tags as $tag) { 
     $hrefs[] = $tag->getAttribute('href'); 
} 
1

Câu hỏi của bạn là diffucult để hiểu nhưng tôi tin rằng bạn muốn có một PHP DOM Parser, bạn có thể tìm thấy phân tích cú pháp dom đơn giản tại đây: http://simplehtmldom.sourceforge.net/ và một exampl sử dụng nhỏ e là:

$array = array(); 
foreach($html->find('a') as $a) 
{ 
    $array[] = $a->href; 
} 

bạn, bạn có thể sử dụng jQuery sau đó bạn sẽ có thể sử dụng điều này không có vấn đề như hệ thống lựa chọn của nó cũng giống như jQuery là tốt như CSS, như jQuery xuất phát từ CSS

-1

nếu định dạng luôn là như nhau, u có thể có thể sắp xếp nó ra với sự kết hợp của phát nổ và strip_tags cái gì đó như

$html="<span class="field-content"><a href="http://url_to_extract">whatever</a></span>" 


$href=end(explode('"',strip_tags($html)));