您的位置:首页 > 编程语言 > PHP开发

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

2012-08-02 15:34 513 查看
<?php
// 根据起始和结束位置翻转字符串
function reverse_str(&$str,$start,$end){
$middle = intval(($start+$end) / 2);
for ($head=$start;$head<=$middle;$head++){
$tail = $end - $head + $start;
if ($str[$head] == $str[$tail]){
continue;
}
$temp = $str[$head];
$str[$head] = $str[$tail];
$str[$tail] = $temp;
}
}

function reverse_words(&$str){
// 直接翻转整个字符串
$i = 0;
while (isset($str[$i])){
$i++;
}
reverse_str($str,0,$i-1);

// 按空格区分单词,恢复单词的正常顺序
$i = 0;
$start = $i;
do{
$i++;
// 略过连续的空格
if ($str[$i-1] == ' ' && $str[$i] == ' '){
$start = $i + 1;
continue;
}
// 确定单词的起始位置,并对单词进行翻转
if (($str[$i] == ' ' || !isset($str[$i])) && $i > $start){
reverse_str($str,$start,$i-1);
$start = $i + 1;
}
}while (isset($str[$i]));
}

$str = 'abcd efgh';
reverse_words($str);
var_dump($str); // string(9) "efgh abcd"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: