2011-02-25 68 views
3

我有以下的貝寶「放入購物車」 HTML按鈕的代碼:使用PHP和正則表達式來提取PayPal按鈕ID

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="DJ445KDUWP402"> 
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

使用PHP和正則表達式,任何人都可以告訴我,我怎麼能得到公正的價值「hosted_button_id」輸入的一部分?

謝謝!

+0

爲什麼要使用正則表達式?像SimpleXML http://ca2.php.net/SimpleXML這樣的XML解析器會更健壯。 – dnagirl 2011-02-25 15:23:34

+0

如果他不需要更強大的功能,爲什麼要使用更強大的功能? – 2011-02-25 15:26:42

回答

2
preg_match('~<input type="hidden" name="hosted_button_id" value="([0-9-A-Z]*?)">~', $html, $matches) 
$matches[1]; //contains ID 

應該做的伎倆

+0

會不會$匹配[1]包含ID? – glomad 2011-02-25 15:49:41

+0

是的,我只是回聲$匹配[1]來獲得我以後的價值。 – c0dec0de 2011-02-25 16:11:03

0

這會工作,是非常靈活的。它只需要value屬性出現在hosted_button_id元素的name屬性之後。 sm修飾符將允許您匹配多行。所以你可以實質上匹配整個html頁面,而不僅僅是hosted_button_id元素。

$str = '<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="hosted_button_id" value="DJ445KDUWP402"> 
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form>'; 

preg_match('/name="hosted_button_id".*?value="(.*?)".*?>/ims', $str, $matches); 

如預期的這種輸出:

Array 
(
    [0] => name="hosted_button_id" value="DJ445KDUWP402"> 
    [1] => DJ445KDUWP402 
) 

你可以採取這種做法更進一步,匹配所有輸入元素的名稱和值。

preg_match_all('/<input .*?name="(.*?)" .*?value="(.*?)".*?>/ims', $str, $matches); 
print_r($matches); 

輸出:

Array 
(
    [0] => Array 
     (
      [0] => <input type="hidden" name="cmd" value="_s-xclick"> 
      [1] => <input type="hidden" name="hosted_button_id" value="DJ445KDUWP402"> 
     ) 
    [1] => Array 
     (
      [0] => cmd 
      [1] => hosted_button_id 
     ) 
    [2] => Array 
     (
      [0] => _s-xclick 
      [1] => DJ445KDUWP402 
     ) 
) 
+0

你不把ID取到一個數組 – 2011-02-25 15:23:34

+0

他之後的值不是ID – xzyfer 2011-02-25 15:26:44