我有以下Paypal按钮代码:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ABCDEFG">
<input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>
我需要从名为hosted_button_id
这就是我正在尝试的:
$html = '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ABCDEFG">
<input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$pp_code = $dom->getAttribute('hosted_button_id');
echo "code is $pp_code"; die;
但是我得到了错误:
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: error parsing attribute name in Entity, line: 1 in /home/parkview/DB8NP8XA/htdocs/ajax/actions/addEvent.php on line 20
Fatal error: Call to undefined method DOMDocument::getAttribute() in /home/parkview/DB8NP8XA/htdocs/ajax/actions/addEvent.php on line 22
答案 0 :(得分:0)
有关“警告”的说明:
虽然格式错误的HTML应该成功加载,但此功能可能会 遇到错误标记时生成E_WARNING错误。的libxml的 错误处理函数可用于处理这些错误。
当您的HTML标记错误时 - 您会收到警告,您可以通过以下方式禁用该警告 此解决方案:https://stackoverflow.com/a/6090728/998096
关于您获得的“致命错误”的说明:
对于DOMDocument,没有这样的方法“getAttribute”,首先需要获取Element。 Element有这种方法。 例如:
$xml = new DOMDocument();
// Load the url's contents into the DOM
$xml->loadHTMLFile($url);
//Loop through each <a> tag in the dom and add it to the link array
$link = $xml->getElementsByTagName('a');
$url = $link->getAttribute('href');
取自PHP手册(评论)。
考虑在该特定输入字段中添加“id”属性, 并使用:
$html->getElementById('the_input_id');
答案 1 :(得分:0)
在该字段中添加id属性,您只需使用getElementById(“hosted_button_id”)。value即该值的值
答案 2 :(得分:0)
将我的评论添加为答案..
http://www.php.net/manual/en/domdocument.getelementsbytagname.php
正如我的评论中提到的,我的PHP缺乏,所以希望这将是有用的。这应该抓取包含“hosted_button_id”作为名称的所有元素。假设你只有一个,你应该能够抓住该NodeList中索引0的第一个也是唯一一个元素。
$dom->getElementsByTagName("hosted_button_id")->item(0);
答案 3 :(得分:0)
这就是我正在做的,因为无法提取单个元素值:
$inputs = $dom->getElementsByTagName("input");
foreach ($inputs as $input) {
if ($input->getAttribute("name") == "hosted_button_id") {
$pp_code = $input->getAttribute("value");
}
}