2013-06-26 52 views
-3

你好,我想刪除這樣的自定義標籤裏面的內容:愨自定義標記刪除一切PHP5

​​

自定義標籤:-start--end-

我找不到這樣做的方法... 任何人??拜託...謝謝你。

這工作:

$row = preg_replace('#(-end-).*?(-start-)#', '$1$2', $row); 

謝謝大家!這工作。

+0

這將是有益的:http://www.php.net/manual/en/book.pcre.php :) – paranoid

+0

您的解決方案似乎並不符合您的例子,因爲它留下的tagss結果。 – Barmar

+1

如果你想出了自己的答案,你應該把它作爲答案並接受它,而不是隻編輯問題。 – Barmar

回答

2

像這樣的東西應該工作:

$haystack = "The sky is -start-content here-end- blue."; 
$start = "-start-"; 
$end = "-end-"; 

$startpos = strpos ($haystack , $start); 
$endpos = strpos ($haystack , $end, $startpos) + strlen("-end-"); 

$length = $endpos - $startpos; 
$newhaystack = substr_replace($haystack, "", $startpos, $length); 

echo $newhaystack; 
+0

已更正的問題,現在運行 – WernerCD

+1

使用火箭筒殺死蒼蠅的完美示例。使用正則表達式可以避免所有額外的代碼。 –

1

使用

$a = explode("-start-",$string); 
$b = explode("-end-",$a[1]); 

echo $a[0].$b[1]; 
+0

這項工作,但不是我所尋找的... 我需要像這樣: $ row = preg_replace('/ - start [^>] * - ([\ s \ S] *?) - \ \/end [^>] * - /','',$ row); – KrujiTwo

+0

@ user2369811你可以更新到你的問題,並解釋爲什麼它不適合你? – Barmar

+0

$ row = preg_replace('#( - end - )。*?( - start - )#','$ 1 $ 2',$ row); 謝謝大家!這工作。 – KrujiTwo

3

這是你想要的嗎?

$string = preg_replace('/\s+-start-.*?-end-\s+/', ' ', $string); 
+0

應該是:'$ string = preg_replace('/ \ s + -start - 。*? - end- \ s + /','',$ string);'你錯過了一個單引號。 –

+0

謝謝,修正。如果你有足夠的權限,你可以通過點擊「編輯」建議簡單的修復。 – Barmar

+0

當然,將來會這樣做:) –