HTML:
<input type="hidden" id="_wpnonce" name="_wpnonce" value="12345678" />
<input type="hidden" name="_wp_http_referer" value="someurl/?album=1&gallery=15" />
我需要获取gallery
的ID,在这种情况下为15
。
我是如何尝试实现此目的的:
$html = <input type="hidden" id="_wpnonce" name="_wpnonce" value="12345678" />
<input type="hidden" name="_wp_http_referer" value="someurl/?album=1&gallery=15" />";
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath( $dom);
$galleryid = $xpath->query(//how to get gallery id?);
答案 0 :(得分:1)
您可以使用parse_url
函数来获取查询字符串值。查看parse_url
function manual。
例如:
$url = 'http://example.com/path?arg=value#anchor';
print_r(parse_url($url));
答案 1 :(得分:0)
更新我的答案,提供了更多详细信息。
您要使用的xQuery路径是(这是基于您提供的html,即输入节点位于文档的根目录)
/input[@name='_wp_http_referer']/@value
这将允许您从输入字段中提取值。完成后,您可以使用正则表达式进行提取,以构建上面的示例
$html = <input type="hidden" id="_wpnonce" name="_wpnonce" value="12345678" />
<input type="hidden" name="_wp_http_referer" value="someurl/?album=1&gallery=15" />";
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath( $dom);
$referer = $xpath->evaluate("/input[@name='_wp_http_referer']/@value");
if(!empty($referer))
{
$doesMatch= preg_match("/gallery\=(\d+)/", $referer, $matches);
if($doesMatch > 0)
{
$gallery=$matches[1];
}
}
答案 2 :(得分:0)
$html = <input type="hidden" id="_wpnonce" name="_wpnonce" value="12345678" />
<input type="hidden" name="_wp_http_referer" value="someurl/?album=1&gallery=15" />";
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXpath( $dom);
$galleryid = $xpath->query('//input')->item(1); //get second input
parse_str($galleryid);
echo $gallery;
答案 3 :(得分:0)
如果您需要一个简单的解决方案:
$found = preg_match('/gallery=[0-9]+/', $html, $match);
$gallery_id = (int)substr($match[0], strlen("gallery="));
答案 4 :(得分:0)
这很简单,可以使用XPath 1.0执行字符串操作。
substring-after(//input/@value, 'gallery=')
然而,在另一个答案中使用parse_url
之类的建议可能是更优雅的解决方案,但这取决于您的用例。使用XPath字符串操作可能是合理的,例如,如果您需要将此作为中间结果用于在谓词中进行过滤。