2011-03-12 58 views
0

我有一個包含標題和說明的迭代數據。每個描述目前都以相應的標題開頭,所以我想要將它關閉。不幸的是,並非所有標題都以與描述開頭所用的相同格式編寫。我打算使用:PHP不區分大小寫的LTRIM?

ltrim($description,$title) 

但案件問題已經停止了。

數據,例如:

array(
    array("title" => "Hello World", "description" => "Hello World This is a description"), 
    array("title" => "Hellow world", "description" => "Hellow World This is a description"), 
    array("title" => "Hello again", "description" => "HELLO AGAIN This is a description")); 

LTRIM($描述,$標題)將清潔第一,而是獨自離開了他人。

我沒有創建數據,我正在清理順便說一句,我剛剛接管了工作。

無論如何,ltrim()是區分大小寫的(是嗎?),所以我對於如何去做這件事感到遺憾。有沒有其他的方式來做到這一點?

編輯

忘了提,標題並不總是出現在描述的時候只有90%

回答

7

LTRIM是不是你首先想要的功能。 ltrim的第二個參數是一個charlist,所以只要遇到一個字符,它就會一直從字符串的左邊移除。

如果每個標題都在每個描述中,您可以使用str_ireplace。並將標題替換爲無,並將計數設置爲1.

更好的選擇是使用正則表達式。

preg_replace('/^'.preg_quote($title, '/').'\s*/i', '', $description); 

,如果它是在描述的第一件事情,後跟任意空格(所以空格/換行符會,如果他們來了標題後取出這將替換稱號。到櫃面保護正則表達式preg_quote是非常重要的標題包含任何正則表達式字符。

+1

+1比我好多了,所以我刪除了青睞你的。希望正則表達式女巫獵人不會趕上你:)。 – kapa 2011-03-12 12:17:03

+0

@bazmegakapa歡呼,我相信這是正則表達式的主要用途,因爲如果由於某種原因標題沒有開始描述,或者有多個空間,這仍然有效。 – Jacob 2011-03-12 12:19:38

+0

@bazmegakapa:因爲這個答案有一些理由,所以我在考慮不要低估它......但是OP說現在描述以標題開始,他沒有說「也許是,也許不是」,所以我不知道一個正則表達式是否是一個好主意。 – greg0ire 2011-03-12 12:26:27