PHP字符串word末字符实现大小写互换的方法


Posted in PHP onNovember 10, 2014

本文实例讲述了PHP字符串word末字符实现大小写互换的方法。分享给大家供大家参考。具体实现方法如下:

一、要求:
给出一个字符串如 “A journey of, a thousand 'miles' must can't \"begin\" with a single step.” ,通过 PHP 程序处理变成 “a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP.”

这里需要注意:

1、每个单词最后的字符如果是大写就变成小写,如果是小写就变成大写。
2、需要考虑类似  can't 这种形式的转换。
3、标点符号(只考虑 , ' " . ;)不用变化。

二、参考算法如下:

<?php

    function convertLastChar($str) {

        $markArr = array(", ", "' ", "\" ", ". ", "; ");

        $ret = "";

        for ($i = 0, $j = strlen($str); $i < $j; $i++) {

            if ($i < $j - 2) {

                $afterStr = $str{$i + 1} . $str{$i + 2};

            } else if ($i < $j - 1) {

                $afterStr = $str{$i + 1} . " ";

            }

            if (in_array($afterStr, $markArr) 

                || $i == $j - 1 

                || $str{$i + 1} == " ") {

                $ret .= strtoupper($str{$i}) === $str{$i} 

                    ? strtolower($str{$i}) 

                    : strtoupper($str{$i});

            } else {

                $ret .= $str{$i};

            }

        }

        return $ret;

    }

?>

测试代码如下:

<?php
    //test

    $str1 = "A journey of, a thousand 'miles' must can't \"begin\" with a single step.";

    $str2 = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. ";

    $str3 = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a ";

    $str4 = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a B";

    $str5 = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a b'";

    $str6 = "A journey of, a thousand 'miles' must can't \"begin\" with a single step. a B\"";
    echo "source:<br/>" . $str1 . "<br/>result:<br/>" . convertLastChar($str1) . "<br/><br/>";

    echo "source:<br/>" . $str2 . "<br/>result:<br/>" . convertLastChar($str2) . "<br/><br/>";

    echo "source:<br/>" . $str3 . "<br/>result:<br/>" . convertLastChar($str3) . "<br/><br/>";

    echo "source:<br/>" . $str4 . "<br/>result:<br/>" . convertLastChar($str4) . "<br/><br/>";

    echo "source:<br/>" . $str5 . "<br/>result:<br/>" . convertLastChar($str5) . "<br/><br/>";

    echo "source:<br/>" . $str6 . "<br/>result:<br/>" . convertLastChar($str6) . "<br/><br/>";

?>

运行结果如下:

source:

A journey of, a thousand 'miles' must can't "begin" with a single step.

result:

a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP.
source:

A journey of, a thousand 'miles' must can't "begin" with a single step. 

result:

a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP.
source:

A journey of, a thousand 'miles' must can't "begin" with a single step. a 

result:

a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP. A
source:

A journey of, a thousand 'miles' must can't "begin" with a single step. a B

result:

a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP. A b
source:

A journey of, a thousand 'miles' must can't "begin" with a single step. a b'

result:

a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP. A B'
source:

A journey of, a thousand 'miles' must can't "begin" with a single step. a B"

result:

a journeY oF, A thousanD 'mileS' musT can'T "begiN" witH A singlE steP. A b"

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
一些常用的php简单命令代码集锦
Sep 24 PHP
php读取数据库信息的几种方法
May 24 PHP
php gzip压缩输出的实现方法
Apr 27 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
php双层循环(九九乘法表)
Oct 23 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
php 原生分页
Apr 01 PHP
PHP 快速排序算法详解
Nov 10 #PHP
PHP基于CURL进行POST数据上传实例
Nov 10 #PHP
ci检测是ajax还是页面post提交数据的方法
Nov 10 #PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 #PHP
php学习笔记之面向对象
Nov 08 #PHP
php学习笔记之基础知识
Nov 08 #PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 #PHP
You might like
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHP面向对象精要总结
2014/11/07 PHP
php自动载入类用法实例分析
2016/06/24 PHP
jQuery的一些注意
2006/12/06 Javascript
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
vue实现弹幕功能
2019/10/25 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
Python常用列表数据结构小结
2014/08/06 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Python上下文管理器全实例详解
2019/11/12 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
2015中秋节晚会开场白
2015/07/30 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
详解Vue的options
2021/05/15 Vue.js
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
简单谈谈Python面向对象的相关知识
2021/06/28 Python
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript