2012-01-25 40 views
1

我需要轉換的,像這樣的字符串,PHP中某些字符串操作的最有效方法?

'hello world' = 'helloWorld' 

而且也反向相同,

'helloWorld' = 'hello world' 

到目前爲止,所有我有兩個轉換是本作的第一,

$str = 'hello world'; 
$str = lcfirst(str_replace(' ', '', ucwords($str))); // helloWorld 

而第二個,

$str = 'helloWorld'; 
$str = preg_split('/(?=[A-Z])/', $str); 
$str = strtolower(implode(' ', $str)); // hello world 

難道這不能實現更簡單或更高效嗎?

+1

什麼是低效的呢?對我來說看起來很好 – Cyclone

+0

最有效的方式是最可讀的,而不是失敗。不要因爲每個請求的0.04ms而讓你的代碼變得eye目結舌。 – Amelia

回答

1

您的camelize代碼已經很好。第二,你可以放棄拆分和內爆:

$str = 'helloWorld'; 
$str = strtolower(preg_replace('/(?<=\\w)([A-Z])/', ' \\1', $str)); 
echo $str; 
// output: hello world 
+0

謝謝你會試試這個,我之前嘗試過使用'preg_replace',但是沒有把它做好。 –

+0

這工作得很好!你能告訴我這個位是什麼意思,或者說是一個鏈接,所以我可以找出答案。 –

+0

這是[back reference](http://php.net/manual/en/regexp.reference.back-references.php)。它告訴正則表達式將它在原始字符串中找到的文本「粘貼」回來。 – webbiedave