使用PHP preg_match_all,获取href的值

发布于 2024-10-09 20:14:42 字数 537 浏览 2 评论 0原文

即使在阅读本教程之后,我也不太了解正则表达式的工作原理 http://www.webcheatsheet .com/php/regular_expressions.php

这是我需要找到的内容:

<link type="text/html" rel="alternate" href="http://link"/>

它应该返回:

http://link

这是我尝试过的内容:

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

您可以笑:)

提前感谢您的帮助和时间:)

I don'T really understabd how regular expressions works even after I read this tutorial http://www.webcheatsheet.com/php/regular_expressions.php

Here is what I need to find:

<link type="text/html" rel="alternate" href="http://link"/>

And it should return:

http://link

Here is what I tried:

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

You can laught :)

Thanks in advance for your help and your time :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

早茶月光 2024-10-16 20:14:42

使用 simplexml

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

使用 dom

$dom = new DOMDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('link');
$attr  = $nodes->item(0)->getAttribute('href');

using simplexml

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

using dom

$dom = new DOMDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('link');
$attr  = $nodes->item(0)->getAttribute('href');
网白 2024-10-16 20:14:42

使用正则表达式解析 (X)HTML 几乎肯定是错误的。使用专用的 XML 解析器。 php 有很多可用的。

Parsing (X)HTML with regex is almost certainly wrong. Use a dedicated XML parser. There are plenty available for php.

榆西 2024-10-16 20:14:42

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

这对我有用

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

You have to cover the needed text-chunk in brackets like (.*), that is what will be returned

This one is working for me

<?php
preg_match_all('/<link type="text\/html" rel="alternate" href="(.*)"\/>/','<link type="text/html" rel="alternate" href="http://link"/>',$patterns2);
print_r($patterns2);
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文