今天用rtrim()函數(shù)時(shí)遇到了一個(gè)奇怪的問題:
echortrim('<p></div>','</div>');// 輸出為 <p
echoltrim('www.survivalescaperooms.com','www.');// 輸出為 Vevb.com
以上的輸出結(jié)果有點(diǎn)出人意料,本來(lái)我想第一行應(yīng)該輸出<p>,第二行會(huì)輸出Vevb.com。
這個(gè)問題糾結(jié)了我好久,一直沒有找到原因,后來(lái)在手冊(cè)中找到了答案:
rtrim()是以字符為單位替換,而不是以字符串的。從右往左替換時(shí)</div>6個(gè)字符肯定會(huì)被替換掉的,再往左時(shí)遇到了>,因?yàn)?gt;也包含在rtirm()的第二個(gè)參數(shù)的字符串(</div>)中,所以也被替換掉了,當(dāng)再往左時(shí)遇到了p,這時(shí)p不包含在第二個(gè)參數(shù)的字符串中。所以替換停止,輸出了<p。
如果這樣理解的話,第二行的輸出結(jié)果就是在意料之中了。呵呵……手冊(cè)中已經(jīng)寫的清清楚楚了。原文:
You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters。
由此可見,rtrim、ltrim與trim第二個(gè)參數(shù)是作為一組字符列表進(jìn)行匹配操作的。這與我們以往認(rèn)識(shí)的str_replace函數(shù)的替換操作不一樣。
新聞熱點(diǎn)
疑難解答