【问题标题】:Fnd specific place in string and get data from it在字符串中查找特定位置并从中获取数据
【发布时间】:2016-12-08 10:11:16
【问题描述】:

我的字符串中有多个图像标签。 像这样

<img src="/files/028ou2p5g/blogs/9d66329f4/5844644f69fe7-64.jpg">

我想找到 FIRST 这样的标签,并从中获取图像名称 5844644f69fe7-64.jpg 假设字符串中有很多其他文本和标签,如何在 PHP 中完成此操作?

【问题讨论】:

  • 我投票结束这个问题,因为没有明确回答。答案没有完全发挥作用。请关闭它我用更简单的问题打开了其他的。

标签: php regex string strpos


【解决方案1】:

您应该像@moopet 建议的那样使用。这是代码,但请注明@moopet。

$str = '<img src="/files/028ou2p5g/blogs/9d66329f4/5844644f69fe7-64.jpg">';

$doc = new DOMDocument();
$doc->loadHTML($str);

$first_img = $doc->getElementsByTagName("img")[0];
var_dump( basename($first_img->getAttribute('src')) );

【讨论】:

    【解决方案2】:

    不要为此使用正则表达式。使用 PHP 的 DOM 解析器或替代方法来提取标签,然后在 src 元素上使用 PHP 的 basename() 函数来提取文件名。

    【讨论】:

    • 并不是说这不起作用,而是使用正则表达式对于 HTML 的子集很好,就像这样。
    【解决方案3】:

    使用preg_match_all() 查找所有出现的事件,然后获取第一个。

    示例:

    <?php
    preg_match_all('/<\s*img[^<>]+?src\s*=\s*[\'\"][^<>\'\"]+?\/([^<>\'\"\/]\.jpg)/', $html, $matches, PREG_SET_ORDER); 
    var_dump($matches[0]); 
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2010-12-06
      相关资源
      最近更新 更多