Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP preg_match_all,获取href的值_Php_Regex_Preg Match All - Fatal编程技术网

使用PHP preg_match_all,获取href的值

使用PHP preg_match_all,获取href的值,php,regex,preg-match-all,Php,Regex,Preg Match All,即使阅读了本教程,我也不太了解正则表达式是如何工作的 以下是我需要找到的: <link type="text/html" rel="alternate" href="http://link"/> 以下是我尝试过的: $find = preg_match_all( '/<link type="text/html" rel="alternate" href=".*', $file, $patterns2 ); $find=preg\u match\u a

即使阅读了本教程,我也不太了解正则表达式是如何工作的

以下是我需要找到的:

<link type="text/html" rel="alternate" href="http://link"/>
以下是我尝试过的:

$find = preg_match_all(
    '/<link type="text/html" rel="alternate" href=".*',
    $file,
    $patterns2
);
$find=preg\u match\u all(

“/使用regex解析(X)HTML是。使用专用的XML解析器。php有很多可用的解析器。

您必须在括号中包含所需的文本块,如
(.*)
,这就是将返回的内容

这个对我有用

<?php
preg_match_all('/<link type="text\/html" rel="alternate" href="(.*)"\/>/','<link type="text/html" rel="alternate" href="http://link"/>',$patterns2);
print_r($patterns2);
?>
使用simplexml

$html = '<link type="text/html" rel="alternate" href="http://link"/>';
$xml  = simplexml_load_string($html);
$attr = $xml->attributes();

你确定,你没有在某个地方收到关于缺少分隔符的错误消息吗?你为什么要这样做?你应该告诉他不要使用正则表达式解析HTML。另外,
我很抱歉我给了他想要的。哦,好的,谢谢你帮我理解这一点。:)我很感激@Goresplater:谢谢你的建议:)如果它解决了你的问题,请将其标记为“已解决”(绿色nike符号);)你给了他破烂的代码,似乎给了他想要的东西,但正如Goresplater先生所指出的那样,这是错误的和不可扩展的。。。我以后不会再犯同样的错误:)我想我会使用DOM,你更喜欢哪一种?(我只是在听你的youtube视频,我很喜欢:)@Jeremy Dicaire-
DOMDocument::loadHTML
将为你修复格式错误的html,因此是首选。但是simple意味着simple(如果html没有格式错误,我个人更喜欢simplexml)
$html = '<link type="text/html" rel="alternate" href="http://link"/>';
$xml  = simplexml_load_string($html);
$attr = $xml->attributes();
$dom = new DOMDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('link');
$attr  = $nodes->item(0)->getAttribute('href');