PHP 一个函数实现字符串反转
这其实还是一道题目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)