CodeSky 代码之空

随手记录自己的学习过程

PHP 一个函数实现字符串反转

2014-01-25 19:31分类: PHP评论: 0

这其实还是一道题目OTZ当然不用在意这些细节,写出来之后它已经不算是题目了吧。

但我写的函数有个缺点,那就是它是以length分割的(因为还不会正则表达式),在PHP 语法糖一枚中提到过:

length = 1代表 截取一个字节,所以对于中文不适用。

2014年02月02日更新:PHP 实现中文字符串截取无乱码修复中文支持

中文截取就会出现乱码问题。

补刀:如果不是题目的话可以使用官方自带函数strrev() 扩展阅读:http://www.w3school.com.cn/php/func_string_strrev.asp

先来看一下函数部分吧。

演示

1		function reversal($origin) {
2			$result = "";							//设定初值
3
4			while (strlen($origin) > 0) {
5				$result .= substr($origin, -1);		//截取最后一个
6				$origin = substr($origin, 0, -1);	//截取除了最后一个
7			}
8
9			return $result;
10		}
11

思路就是一个个截取了之后反向拼接,有点像刀削面(?)(就知道吃)

完整版的源码:

1<!DOCTYPE html>
2<html>
3<head>
4	<meta charset="utf-8">
5	<title>Reversal</title>
6</head>
7<body>
8	<form action="reversal.php" method="post">
9		<input type="text" name="str" placeholder="输入一个字符串">
10		<input type="hidden" name="shot" value="shot">
11		<input type="submit" value="发射!">
12	</form>
13
14	<?php 
15		if(!empty($_POST['shot'])) {
16			$problem = FALSE;
17
18			if(empty($_POST['str'])) {
19				$problem = TRUE;
20				echo '请输入字符串╮(╯-╰)╭';
21			}
22
23			if(!$problem) {
24				$origin = $_POST['str'];
25				$result = reversal($origin);
26
27				echo '原始:' . $origin . '<br/>';
28				echo '结果:' . $result . '<br/>';
29			}
30		}
31
32
33		function reversal($origin) {
34			$result = "";							//设定初值
35
36			while (strlen($origin) > 0) {
37				$result .= substr($origin, -1);		//截取最后一个
38				$origin = substr($origin, 0, -1);	//截取除了最后一个
39			}
40
41			return $result;
42		}
43	?>
44</body>
45</html>
46

评论 (0)