php中如何从字符串中获取html标签?

发布于 2024-11-06 04:12:49 字数 274 浏览 0 评论 0 原文

我有一个从 RSS 提要中提取的 html 输出,它是这样的:

<div>
    <p>
        Some text
    </p>
    <iframe src="http://www.source.com"></iframe>
</div>

问题是我只需要 iframe 标记的 attr“src”,有没有办法用 PHP 获取它?也许是正则表达式?

提前致谢!

I have a html output I'm pulling from a RSS feed, it is somethig like this:

<div>
    <p>
        Some text
    </p>
    <iframe src="http://www.source.com"></iframe>
</div>

The problem is that I only need the attr "src" of the iframe tag, Is there a way to get it with PHP? Regex maybe?

Thanks in advance!

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

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

发布评论

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

评论(4

短暂陪伴 2024-11-13 04:12:49

如果您始终只获取上面列出的数据,则可以使用简单的子字符串,使用 src=""> 的字符串位置来指定您想要的子字符串:

$html = '<div><p>Some text</p><iframe src="http://www.source.com"></iframe></div>';

$start = strpos($html, 'src="') + 5;
$length = strpos($html, '"></iframe') - $start;
$src = substr($html, $start, $length);

echo $src;

编辑 - 修复代码并分成多行。这很容易成为一行,但是 - 我认为如果我分成多行会更容易理解。

If you're consistently getting just the data you listed above, you could use a simple substring, using the string positions of src=" and "><iframe to specify which substring you want:

$html = '<div><p>Some text</p><iframe src="http://www.source.com"></iframe></div>';

$start = strpos($html, 'src="') + 5;
$length = strpos($html, '"></iframe') - $start;
$src = substr($html, $start, $length);

echo $src;

EDIT - fixed the code and split into multiple lines. This could easily be a one-liner, but - thought it was easier to understand if I broke into multiple lines.

故事与诗 2024-11-13 04:12:49

我推荐 DOMDocumentSimpleXML

像这样的事情可能会给你带来想法。

var_dump(simplexml_load_string($rss_feed));

I'd recommend DOMDocument or SimpleXML.

Something like this might give you the idea.

var_dump(simplexml_load_string($rss_feed));
夜巴黎 2024-11-13 04:12:49

我不是正则表达式方面的专家,但另一种方法是在 " 标记上使用 explode 并获取 array[1] ,例如this:

$rssFeed = '<div>
    <p>
        Some text
    </p>
    <iframe src="http://www.source.com"></iframe>
</div>';

$rssArray = explode('"', $rssFeed);

echo $rssArray[1];

这要求您的 RSS feed 非常一致,如果“Some text”部分包含 " 标记,这会造成混乱,您会得到错误的字符串。

您可以查看数组中以 httpwww 开头的所有内容来解决错误,但同样,它需要非常一致的 RSS 提要,因此您必须自行判断如果这足以完成工作的话。

I'm not an expert with regex, but a alternative way would be to use explode on the " marks and get array[1] like this:

$rssFeed = '<div>
    <p>
        Some text
    </p>
    <iframe src="http://www.source.com"></iframe>
</div>';

$rssArray = explode('"', $rssFeed);

echo $rssArray[1];

This requires your RSS feed to be very consistent though, if the "Some text" part were to contain " marks, this would mess up and you'd get a wrong string.

You could look through the array for everything starting with http or www to work around errors, but again, it requires a very consistent RSS feed, so you have to judge for you self if this would do the job good enough.

聽兲甴掵 2024-11-13 04:12:49

您可以使用一些命令行 perl 脚本来解析此输出。这可能非常强大,具体取决于您制作正则表达式的通用程度。

例如,

$command = "echo your_html_output | perl -pe 's/src=\"(.*)\"/$1/'"; # 捕获 src=" 和 "(结束引号)之间的内容

$output = shell_exec("$command");

You could parse this output with a little command line perl script. This can be quite robust depending on how general you make the regular expression.

For example,

$command = "echo your_html_output | perl -pe 's/src=\"(.*)\"/$1/'"; # Capture what is in between src=" and the " (the closing quote)

$output = shell_exec("$command");

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文