2011-07-18 37 views
45

僅更換第一場比賽我有類似結構的字符串:'aba aaa cba sbd dga gad aaa cbz'。該字符串可能每次都有點不同,因爲它來自外部源。使用的preg_replace

我想更換'aaa'而不是其他的唯一一次出現。可能嗎?

回答

86

preg_replace可選的第四個參數是limit

preg_replace($search, $replace, $subject, 1); 
+0

謝謝你的回答,如果我只需要從最後開始替換第一場比賽?代碼是什麼? –

+2

@josesanchez如果字符串不是太長,你可以使用strrev扭轉它,並用這一招,但搜索要查找模式的反向,然後再反向的字符串。如果是很長的,你會想掃描它是反向避免倒車串兩次 – Paulpro

8

您可以使用preg_replacelimit說法,這和其設置爲1,使至多一個替代情況:

$new = preg_replace('/aaa/','replacement',$input,1); 
0

例如,從$內容是:

START 
FIRST AAA 
SECOND AAA 

1)如果你使用:

$content = preg_replace('/START(.*)AAA/', 'REPLACED_STRING', $content); 

它將一切從開始更改到最後AAA和您的結果將是:

REPLACED_STRING 

2)如果你使用:

$content = preg_replace('/START(.*?)AAA/', 'REPLACED_STRING', $content); 

您的結果將會如下:

REPLACED_STRING 
SECOND AAA 
+0

爲什麼這恰好發生的開銷?有關 」?」。 – user111671