偶遇一PHP面試題,題目很短,也很常見,但更容易出錯,題目如下
如何實現字符串翻轉?
第一反應,當然是strrev函數啦,這么容易的題目還放在面試里考,真不嫌麻煩啊?但是看了網上的答案后,發現自己錯了~~~
strrev函數對英文很好用,直接可以實現字符串翻轉,但是面對中文呢?肯定都是亂碼,對於這樣的問題有很多,比如strstr,substr等函數都是這樣的。還好PHP提供了mb_類的函數實現不同編碼、不同語言之間的相互轉換等操作。下面是我寫的PHP字符串翻轉函數(mb_類的函數需要開啟一個mb_string實現)。
<?PHP function getRev($str,$encoding='utf-8'){ $result = ''; $len = mb_strlen($str); for($i=$len-1; $i>=0; $i--){ $result .= mb_substr($str,$i,1,$encoding); } return $result; } $string = 'OK你是正確的Ole'; echo getRev($string); ?>
輸出結果:
---------- PHP Debugger ---------- elO的確正是你KO Output completed (0 sec consumed) - Normal Termination