2011-10-29 16 views
0

我有這個簡單的字符串:PHP ucwords只能處理第一個單詞嗎?

echo ucwords("<row><cell><chars class='subHeader'><value>how much time do you spend</value></chars></cell></row>"); 

但它的輸出就像這樣:

<row> 
<cell> 
<chars Class="subHeader"> 
<value>how Much Time Do You Spend</value> 
</chars> 
</cell> 
</row> 
+4

這不是治療,作爲一個詞,因爲它立即被標籤爲前綴。不知道如果不開始解析HTML,可以做些什麼 –

回答

1

只要你的HTML是簡單的像輸入,特別是被US-ASCII編碼,並且不包含任何CDATA節,這可能工作:

$str = "<row><cell><chars class='subHeader'><value>how much time do you spend</value></chars></cell></row>"; 

$str = str_replace('>', '> ', $str); 
$str = ucwords($str); 
$str = str_replace('> ', '>', $str); 

echo $str; 

這並不工作,因爲>是保留字符在HTML中。在每個後面添加一個空格將使ucwords按照記錄進行工作。在ucwords完成它的工作後,更改被恢復。

但是,如果>序列早些時候存在,那麼這可能會帶來問題,這些序列也將被刪除。所以保重。

0

你確定它的輸出是,並沒有<row><cell><chars Class='subHeader'><value>how Much ...,注意大寫C對Class。我的猜測是,ucwords()對空格分隔的單詞進行操作。

+0

抱歉,您是對的,請參閱編輯 – benhowdle89

2

如果有可能,你會想你的代碼更改爲:

echo "<row><cell><chars class='subHeader'><value>" . ucwords("how much time do you spend") . "</value></chars></cell></row>"; 
相關問題