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 构造函数construct的前下划线是双的_
Dec 08 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
php使用正则表达式获取图片url的方法
Jan 16 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
php进程daemon化的正确实现方法
Sep 06 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
关于手调机和数调机的选择
2021/03/02 无线电
基于递归实现的php树形菜单代码
2014/11/19 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
Opacity.js
2007/01/22 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
香港士多网上超级市场:Ztore
2021/01/09 全球购物
大学自荐信
2013/12/12 职场文书
安全生产汇报材料
2014/02/17 职场文书
优秀食品类广告词
2014/03/19 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
使用MybatisPlus打印sql语句
2022/04/22 SQL Server