使用 PHP 和 Regex 提取 Paypal 按钮 ID

Posted

技术标签:

【中文标题】使用 PHP 和 Regex 提取 Paypal 按钮 ID【英文标题】:Using PHP and Regex to extract Paypal Button ID 【发布时间】:2011-07-04 09:17:43 【问题描述】:

我有以下 Paypal“添加到购物车”html 按钮代码:

<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" >
<img  border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif"  >
</form>

使用 php 和正则表达式,谁能告诉我如何获取“hosted_button_id”输入的值部分?

谢谢!

【问题讨论】:

为什么要使用正则表达式?像 SimpleXML ca2.php.net/SimpleXML 这样的 XML 解析器会更加健壮。 如果他不需要更健壮的东西,为什么要使用更健壮的东西? 【参考方案1】:
preg_match('~<input type="hidden" name="hosted_button_id" value="([0-9-A-Z]*?)">~', $html, $matches)
$matches[1]; //contains ID

应该做的伎俩

【讨论】:

$matches[1] 不会包含 ID 吗? 是的,我只需要回显 $matches[1] 即可获得我想要的值。【参考方案2】:

这将起作用并且非常灵活。它只需要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" >
<img  border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif"  >
</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
        )
)

【讨论】:

你不会把 ID 抓取到数组中 他追求的是价值而不是ID

以上是关于使用 PHP 和 Regex 提取 Paypal 按钮 ID的主要内容,如果未能解决你的问题,请参考以下文章

PHP Regex patern,KODI赛季海报提取器[关闭] 。

对PayPal输出使用RegEx表达式

使用 RegEx 在 JSON 文件中提取和创建属性

使用 PayPal 结账的更好方法?

用于 PHP 中的动态立即付款按钮的 Paypal API

在 C++Builder 中使用 boost::regex 提取双引号