使用 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
属性之后。 s
和 m
修饰符将允许您匹配多行。因此,您实际上可以匹配整个 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的主要内容,如果未能解决你的问题,请参考以下文章