php实现按单词对字符串进行翻转

 1 <?php
 2 // 根据起始和结束位置翻转字符串
 3 function reverse_str(&$str,$start,$end){
 4     $middle = intval(($start+$end) / 2);
 5     for ($head=$start;$head<=$middle;$head++){
 6         $tail = $end - $head + $start;
 7         if ($str[$head] == $str[$tail]){
 8             continue;
 9         }
10         $temp = $str[$head];
11         $str[$head] = $str[$tail];
12         $str[$tail] = $temp;
13     }
14 }
15 
16 function reverse_words(&$str){
17     // 直接翻转整个字符串
18     $i = 0;
19     while (isset($str[$i])){
20         $i++;
21     }
22     reverse_str($str,0,$i-1);
23 
24     // 按空格区分单词,恢复单词的正常顺序
25     $i = 0;
26     $start = $i;
27     do{
28         $i++;
29         // 略过连续的空格
30         if ($str[$i-1] == ' ' && $str[$i] == ' '){
31             $start = $i + 1;
32             continue;
33         }
34         // 确定单词的起始位置,并对单词进行翻转
35         if (($str[$i] == ' ' || !isset($str[$i])) && $i > $start){
36             reverse_str($str,$start,$i-1);
37             $start = $i + 1;
38         }
39     }while (isset($str[$i]));
40 }
41 
42 $str = 'abcd efgh';
43 reverse_words($str);
44 var_dump($str); // string(9) "efgh abcd"

posted on 2012-08-02 15:34  ianarfa  阅读(226)  评论(0编辑  收藏  举报

导航