2012-08-09 29 views
0

我試圖在php中提取以下內容,但是我的正則表達式或egreg不合適,我感到非常困惑。請幫我把這兩個變量:fopen strip into php變量

<a onmouseover="dgsa.sm(this)" onmouseout="dgsa.hm();" href="http://www.cnn.com/testpage.html#page_mostview">test titles</a> 

我想要的變量:

$url="http://www.cnn.com/testpage.html#page_mostview"; 
$title="test titles"; 

任何形式的對這個幫助是極大的讚賞。

+1

使用'DOMDocument'解析HTML並從中提取值。 – Ryan 2012-08-09 00:53:47

+1

http://stackoverflow.com/a/1732454/374601 – 2012-08-09 00:55:56

+0

@erty

忍不住爲時已晚! :O – Hamish 2012-08-09 01:00:53

回答

0

如果你在一個大的字符串有:

<?php 
$str = '<a href="ABC.jpg">Hello</a> <a href="DEF.jpg">Bye</a>'; 
$expr = '/<a[^>]*? href=\"(?<url>[^\"]+)\"[^>]*?>(?<text>.*?)<\/a>/'; 
echo preg_match_all($expr, $str, $amatches); 
echo '<br><br>'; 
print_r($amatches); 
?> 

您還可以使用:

preg_match_all($expr, $str, $amatches, PREG_SET_ORDER); 

可能符合好(我OFEN喜歡這種方式)如果你在有

在循環中指定字符串和句柄,使用preg_match代替。 Tis將只返回第一個,然後你循環。


編輯:這裏是你的例子,根據要求。

<?php 

$str = '<a onmouseover="dgsa.sm(this)" onmouseout="dgsa.hm();" href="http://www.cnn.com/testpage.html#page_mostview">test titles</a>'; 

$expr = '/<a[^>]*? href=\"(?<url>[^\"]+)\"[^>]*?>(?<text>.*?)<\/a>/'; 

echo preg_match_all($expr, $str, $amatches, PREG_OFFSET_CAPTURE); 

echo '<br><br>'; 

print_r($amatches); 

?> 
+0

我一直在嘗試過去的幾個小時,我似乎無法讓它做我想做的事。你能幫我用例子修改你的答案嗎?這一定會幫助我學習。 – thevoipman 2012-08-09 14:11:12

+0

我認爲dgsa.hm();給我帶來麻煩...... – thevoipman 2012-08-09 14:35:44

+0

不 - 這不是麻煩。根據要求,我只是簡單地粘貼你的字符串。經過測試和工作的一種享受。因此,請檢查您正在複製/粘貼的內容。 – Robbie 2012-08-09 23:49:00