2015-11-19 77 views
1

我在这里有一种情况,您能否帮我做到这一点。我有串状 -PHP - 如果标签的内容以特定文本开头,则删除标签的内容

Someother string \n\n or anything[img]data:image/png;base64,iVBORw0KGgoAAAAN........[/img]aaa 

也有一些这样的 -

anything[img]http://imagepath.com/image.png[/img]aaa 

我想删除[img]标签,如果它开始与/包含data:image[img]标签。

正则表达式会很棒。

我想这一点 -

preg_replace('#data:image/[^;]+;base64,#', '', $string); 

但不能提供预期的结果。

回答

0
$string = preg_replace('/\[img\]data:image.*?\[\/img\]/', '', $string); 

简单的测试脚本:

<?php 
$string = 'Stack [img]data:image/png;base64,iVBORw0KGgoAAAAN...[/img] Overflow'; 

$string = preg_replace('/\[img\]data:image.*?\[\/img\]/s', '', $string); 

echo "$string\n"; 
?> 

输出是:

 
Stack Overflow 
+0

谢谢你的工作! :)我有一个数据库,并有这吨。我需要通过这个修复database.sql文件。 – HADI

+0

如果你的字符串非常大,这个正则表达式会导致崩溃。它不支持'[img]'和'[/ img]'之间的换行符号。 –

+0

这实际上并不是那么大,只有5MB的gzip sql文件。我这样做 - http://codeshare.io/FI1kH,它在不到一秒钟内完成。所以我想更大的文件会没事的。你有更好的建议吗? – HADI