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程序61条面向对象分析设计的经验小结
Nov 12 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
php实现购物车功能(下)
Jan 05 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
php生成毫秒时间戳的实例讲解
Sep 22 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 特殊字符处理函数
2008/09/05 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
axios post提交formdata的实例
2018/03/16 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
JS实现图片切换特效
2019/12/23 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python日志模块logging基本用法分析
2018/08/23 Python
Python底层封装实现方法详解
2020/01/22 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
怎样写留学自荐信
2013/11/11 职场文书
技术合作协议书范本
2014/04/18 职场文书
植树节活动总结
2014/04/30 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
学年个人总结范文
2015/03/05 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP