我有一个包含图像和文本的数据库的结果。我想删除第一张图片。
示例:
$string = 'This is some text and images
<img src="http://linktoimage" border="0">,
more text and <img src="http://linktoanotherimage"> and so on';
我想删除第一张图片,它并不总是相同的网址。
感谢您的帮助。
答案 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);