PHP ucwords工作的所有,但第一个字


PHP ucwords working on all but first word?

我有这个简单的字符串:

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>

如果可能的话,您将希望将代码更改为:

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

只要你的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完成它的工作后,更改被恢复。

然而,这可能会给你带来问题,如果>序列存在较早,也将被删除。所以保重。

您确定它输出的是这个,而不是<row><cell><chars Class='subHeader'><value>how Much ...,请注意Class上的大写C。我猜ucwords()对空格分隔的单词进行操作。