如何从字符串中删除第一个图像

时间:2012-01-04 19:14:21

标签: php

我有一个包含图像和文本的数据库的结果。我想删除第一张图片。

示例:

$string = 'This is some text and images 
    <img src="http://linktoimage" border="0">,
    more text and <img src="http://linktoanotherimage"> and so on';

我想删除第一张图片,它并不总是相同的网址。

感谢您的帮助。

6 个答案:

答案 0 :(得分:4)

$string = 'This is some text and images 
    <img src="http://linktoimage" border="0">,
    more text and <img src="http://linktoanotherimage"> and so on';

print preg_replace('/<img(.*)>/i','',$string,1);

上面应该返回

This is some text and images 
,
    more text and <img src="http://linktoanotherimage"> and so on

假设你知道它会以空格和换行符为前缀,并以逗号和换行符为后缀(你也想要删除它们),你可以这样做

print preg_replace("/\n    <img(.*)>\,\n    /i",'',$string,1);

哪个会给你

This is some text and images more text and <img src="http://linktoanotherimage"> and so on

答案 1 :(得分:3)

另一个Thread

有一个很好的答案
function get_first_image($html){
    require_once('SimpleHTML.class.php')

    $post_dom = str_get_dom($html);

    $first_img = $post_dom->find('img', 0);

    if($first_img !== null) {
        return $first_img->src;
    }

    return null;
}

你可以通过Regex表达式来实现,但是regex并不适合这个。

答案 2 :(得分:1)

$var = 'This is some text and images 
       <img src="http://linktoimage" border="0">, 
       more text and <img src="http://linktoanotherimage"> and so on';

echo preg_replace('/<img.*?>/', '123', $var, 1);

这应该这样做。 ?在正则表达式是让它不成熟。

答案 3 :(得分:0)

作为一名RegEx新手,我倾向于避免它并使用类似的东西:

$i = strpos($string,'<img');
if ($i !== false) {
    $j = strpos($string, '>', $i);
    if ($j !== false) $string = substr($string,0,$i) . substr($string,$j);
}

可能应该是$i-1和/或$j+1 - 我永远不会记得应该是什么。

答案 4 :(得分:0)

最后把它钉了下来:

preg_replace('/<img[\S\s]*?>/i','',$txt,1)

这个也适用于你可能有的情况:

$string = 'This is some text and images 
    <img 
        src="http://linktoimage" border="0">,
    more text and <img src="http://linktoanotherimage"> and so on';

(标签中的新行字符。)

答案 5 :(得分:0)

此代码适用于我

$ html是您要从中删除第一个图片代码的html内容变量。

$str = preg_replace('/(<img[^>]+>)/i','',$html,1);