【问题标题】:Remove multiple images in source code that are back to back except the last one删除源代码中除最后一张外背靠背的多张图片
【发布时间】:2013-08-17 21:01:27
【问题描述】:

好的,这就是我想要做的。我有一个包含文章的 MySql 数据库。有些文章有 其中的图像,有些像这样有多个图像背靠背......

    $preoutput = 'RANDOMHTML
    <img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
    <img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
    <img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
    RANDOMHTML' ;

我想删除最后一张之前的所有图片,RANDOMHTML中可能有图片 同样,我想忽略这些。这些图像一遍又一遍是相同的图像,但大小不同, 所以图像有不同的名称.... 140x80.jpg、280x160.jpg 等。另外请注意,扩展名并不总是 jpg 有些也是png、gif等。

我想要的只是最后一个图像标签,因为它通常是最小的。 (无论如何,CSS 都会覆盖)

    $output = 'RANDOMHTML
    <img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
    RANDOMHTML' ;

我正在考虑某种 str_replace 与 count 函数之类的东西。

【问题讨论】:

  • “背靠背”图像是否被 div 等包围?
  • 不要使用正则表达式解析 HTML。使用适当的 HTML 解析模块。 您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用已经编写、测试和调试的 PHP 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/php

标签: php mysql html-parsing


【解决方案1】:

你可以使用explode做到这一点:

$string = 'RANDOMHTML
<img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
<img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
<img src="http://example.com/image/SOMERANDOMIMG.jpg" alt="SOMERANDOMALTTEXT">
RANDOMHTML' ;


$ex_string = explode('<img', $string);

现在你会在这里得到所有的爆炸字符串。现在你只需要第一个和最后一个字符串来进行你想要的查询。

echo $ex_string[0].'<img '.$ex_string[3]; // we are adding img tag because it must have been removed due to explode
//here $ex_string[0] is all the html that came before the first image is encountered
//and $ex_string[3] would be the last image data and all the data HTML appending it

 ?> 

这将为您提供所需的字符串。

【讨论】:

  • there might be images in the RANDOMHTML as well
  • 这些图像是否具有与所需图像相同的“前缀”src?
  • 实际上,这将解决我正在寻找的一半......杜赫时刻......所以我需要做的就是想办法在数组中找到只是 img 的行自己标记...
  • $ex_string[0] = "

    一些随机的东西...

    foobar ..." ; $ex_string[1] = "

    more randomhtml

    ' ; $ex_string[2] = "" ; $ex_string[3] = "
    morehtml"; 只有独立的图像 html 代码我想从数组中删除在关闭 img 标签后,我想要的任何其他人都会有更多的 html 连接到它......给你这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 2020-03-29
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多