2011-10-29 6 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

>は予約文字であるため、

$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

あなたはClassに大文字のCに注意し、それが<row><cell><chars Class='subHeader'><value>how Much ...こと、とされていない出力だと確信しています。私の推測では、ucwords()はスペース区切りの単語で動作するということです。限り、あなたのHTMLは、入力中のような単純な、特にUS-ASCIIでエンコードし、任意のCDATAセクションを含有していないされ、これはうまくいくかもしれないということであるよう

+0

あなたは申し訳ありませんが、編集を参照してください – benhowdle89

2

それが可能だ場合、あなたはあなたのコードを変更したいと思う:それはすぐにタグが付けているため

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