使用 Reg Expression 重新格式化 RSS feed 中的图像

发布于 2024-09-19 22:12:12 字数 787 浏览 7 评论 0原文

我正在使用 PHP (5.2) 从 MySQL 数据库创建一些 RSS 提要,专门用于我通过 AppMakr 制作的 iPhone 应用程序。

它们取自网站上的文章,其中嵌入了图像,但在提要中它们看起来不太好。我想要尝试做的是,只要

中有图像围绕它,这样它们就在自己的行上,并且不会尝试环绕文章文本。

图像的格式是这样的:

 <a rel="lightbox" href="http://images.domain.comk/543/image1.jpg"><img class="imageright" src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></a>

所以基本上被 和“imageright”或“imageleft”类包围。

我想将其更改为:

 <p><img src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></p>

基本上删除 href 和 imagexxxx 类以及 p 标签中的周围内容。

我认为 preg_replace 可能必须使用,但不知道我实际会用它做什么。非常感谢任何帮助。

I am creating some RSS feeds using PHP (5.2) from a MySQL db specifically for an iPhone app I am making through AppMakr.

They are taken from articles on a website which contain images embedded in them, however in the feeds they don't look great. What I want to try and do is whenever there is an image surround it in <p> so they are on their own line and don't try to wrap around article text.

The format of a image is like this:

 <a rel="lightbox" href="http://images.domain.comk/543/image1.jpg"><img class="imageright" src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></a>

So basically surrounded with a <a href> and with a class of "imageright" or "imageleft".

What I would love to change this to is:

 <p><img src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></p>

Basically removing the href and imagexxxx class and surrounding in p tags.

I am thinking preg_replace will prob have to be used, but at a loss to what I would actually use for it. Any help is very appreciated.

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

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

发布评论

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

评论(2

残花月 2024-09-26 22:12:12

因此,您需要使用正则表达式进行匹配,如下所示:

<a(.*)><img(.*)class="imageright" (.*)></a>

然后使用替换正则表达式,如下所示:

<p><img$2$3></p>

这不是最灵活的,但它应该可以解决 preg_replace() 的问题

So you will need to use a regexp for matching like this one:

<a(.*)><img(.*)class="imageright" (.*)></a>

And then a replace regexp like this:

<p><img$2$3></p>

This is not the most flexible one but it should do the trick for preg_replace()

悲歌长辞 2024-09-26 22:12:12

此正则表达式匹配特定 HTML 标记的开始和结束对。标签之间的任何内容都存储到第一个捕获组中。

'<%TAG%[^>]*>(.*?)</%TAG%>'

这给了我们一个起点。现在我们需要将 替换为

PHP 在 preg_replace 中提供了一个简单的方法来执行此操作()

preg_replace ($pattern, $replacement, $text);

现在只需插入正确的值:

$patterns = '<%a%[^>]*>(.*?)</%a%>';
$replacement = '<%p%[^>]*>(.*?)</%p%>';
$text = ' <a rel="lightbox" href="http://images.domain.comk/543/image1.jpg"><img class="imageright" src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></a>';

echo preg_replace ($pattern, $replacement, $text);

这是一个未经测试的示例,旨在用作模式。您应该阅读 http://www.php.net/manual/en /function.preg-replace.php 在创建解决方案之前。

This Regex matches the opening and closing pair of a specific HTML tag. Anything between the tags is stored into the first capturing group.

'<%TAG%[^>]*>(.*?)</%TAG%>'

This gives us a starting point. Now we need to replace the <a href></a> with <p></p>

PHP provides an easy method to do this in preg_replace()

preg_replace ($pattern, $replacement, $text);

now just insert the correct values:

$patterns = '<%a%[^>]*>(.*?)</%a%>';
$replacement = '<%p%[^>]*>(.*?)</%p%>';
$text = ' <a rel="lightbox" href="http://images.domain.comk/543/image1.jpg"><img class="imageright" src="http://images.domain.comk/543/image1.jpg" alt="" width="300" height="250" /></a>';

echo preg_replace ($pattern, $replacement, $text);

This is a non-tested example and is meant to be used as a pattern. You should read http://www.php.net/manual/en/function.preg-replace.php before creating your solution.

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