2015-11-19 73 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