php 字符串单词反转,php – 如何反转字符串中的单词?

其他成员已经提出/回答了这个问题,但我的情况有点不同……

问题:如何反转字符串中的单词?你可以使用strpos(),strlen(),substr()但不能使用其他非常有用的函数,比如explode(),strrev()等.

这基本上是一个面试问题所以我需要展示操纵字符串的能力.

例:

$string =“我是个男孩”

回答:

“我是一个人”

以下是我的解决方案,花了我2​​天(叹气),但必须有更优雅的解决方案.我的代码看起来很长..

提前致谢!

我的本意:

1. get number of word

2. based on number of word count, grab each word and store into array

3. loop through array and output each word in reverse order

码:

$str = "I am a boy";

echo reverse_word($str) . "\n";

function reverse_word($input) {

//first find how many words in the string based on whitespace

$num_ws = 0;

$p = 0;

while(strpos($input, " ", $p) !== false) {

$num_ws ++;

$p = strpos($input, ' ', $p) + 1;

}

echo "num ws is $num_ws\n";

//now start grabbing word and store into array

$p = 0;

for($i=0; $i

$ws_index = strpos($input, " ", $p);

//if no more ws, grab the rest

if($ws_index === false) {

$word = substr($input, $p);

}

else {

$length = $ws_index - $p;

$word = substr($input, $p, $length);

}

$result[] = $word;

$p = $ws_index + 1; //move onto first char of next word

}

print_r($result);

//append reversed words

$str = '';

for($i=0; $i

$str .= reverse($result[$i]) . " ";

}

return $str;

}

function reverse($str) {

$a = 0;

$b = strlen($str)-1;

while($a < $b) {

swap($str, $a, $b);

$a ++;

$b --;

}

return $str;

}

function swap(&$str, $i1, $i2) {

$tmp = $str[$i1];

$str[$i1] = $str[$i2];

$str[$i2] = $tmp;

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值