资讯专栏INFORMATION COLUMN

PHP经验总结 - 开发技巧分享

mikasa / 1205人阅读

摘要:这里简单介绍一下方法,中文解释就是将整个文件读入一个字符串,它有个参数这里他们分别表示要读取的文件的名称,另指路径,后面三个参数基本不会用到,甚至第二个参数都很少见,所以重点是确定你要读取文件的路径,是绝对路径。

简述

接触PHP差不多2年,从懵懂到入门,再到追求稳定高效的高阶级学习,我慢慢的积累一些PHP编程经验,我本人记性不好,所以把这些经验记下来,慢慢累积,乐自助人,何乐不为呢?下面是我面对一些问题所采取处理解决方案,希望对大家有所帮助,同时也欢迎大家指正。

问题&解决方案 1、PHP对特殊字符串的处理方案

普通的字符串截取,一般采用substr()或者mb_substr(),需要说明的是substr()和mb_substr()仅限于英文阿拉伯数字的处理,对中文的截取处理是很不友好的,不仅涉及到字符编码gbk和utf-8的区分,还有一些乱码情况,因此对于字符串的截取,特别是包含中文的字符串,首推正则匹配处理,下面附上解决方案的案例:

    ";
    print_r($urlArray);
    
    // * 匹配获取中文()里面的内容
    header("Content-type: text/html; charset=utf-8"); 
    $title = "不知道什么鬼的学校(北京大学,南京大学)";
    preg_match_all( "/((.+?))/", $title, $resultArr);
    echo "目标字段:" . $title . "
"; echo "
";
    print_r($resultArr);
    
    // * 匹配字符串内的指定中文字符
    header("Content-type: text/html; charset=utf-8"); 
    $chstr = "交通运输大类";
    $match = "/类|类大/";
    $chstr = preg_replace($match,"",$chstr);
    echo $chstr;
    ?>
    

当然了,字符串处理还有其他办法,不过我一般是用上述两种,要不正则匹配,要不字符串截取,如果你有更好更优的解决方案,欢迎分享你的解决方案。

2、读写文本数据的处理解决方案

数据写入文本,一般有两种情况,要不就是字符串写入文本,要不就是数组(一维或者多维)写入文本。

写入文本的方法有fwrite()和file_put_contents(),我一般选择后者。

保证数据写入文本时是一个字符串,所以处理一维或者多维数组时,建议使用json格式封装数组数据,读取的时候解析json即可。

    
    

这是一个简单的数据写入文本的案例,我有一个数组数据,我需要写入一个文本保存在服务器上,那么我首先要确定我要把文件存在哪里?确定好文本存储路径后,对数据进行转义处理,一般我会进行json转义处理,变成字符串后调用file_put_contents()方法进行数据写入文本操作,最终数据以json字符串的方式存储到服务器我指定的路径下。

这里简单介绍一下file_put_contents()方法,中文解释就是将一个字符串写入文件,它有4个参数:file_put_contents();这里他们分别表示:要被写入数据的文件名,要写入的数据,一般来讲后面2个参数是不会用到的,所以我们确定好文件名和数据就可以 这个方法了,下面附上一个PHP官网的案例:

    

读取文本的方法有fopen()和file_get_contents(),我一般选择后者。

读文本数据时必须保证路径是绝对路径。

有需要可能会用到


这里是一个简单的文本数据读取的案例,我在确定一个文本路径后,调用file_get_contents()方法进行文本数据读取,从而获得文本数据,期间有必要还需要个json或者其他编码转义处理。

这里简单介绍一下file_get_contents()方法,中文解释就是将整个文件读入一个字符串,它有5个参数:file_get_contents();这里他们分别表示:要读取的文件的名称,另指路径,后面三个参数基本不会用到,甚至第二个参数都很少见,所以重点是确定你要读取文件的路径,是绝对路径。下面附上PHP官网的例子:

     PHP 5
    $file = file_get_contents("./people.txt", FILE_USE_INCLUDE_PATH);
    ?>

总结一下读写文本的处理,一般来讲,渡读和写是相互相成的,你需要确定你的文本存放路径(目录位置),因为无论读还是写,你都是操作那个目录下的文件,对于同一个业务来讲,所以有了路径之后,接下来就是数据处理,一般来讲我建议在数据在写入文本前先进行字符串转换,因为数据写入文本的方法对字符串类型的数据更加友好,能避免出现数据丢失的情况。如果大家有什么更好的处理方案,欢迎分享,同时欢迎指正我的问题。

3、数组顺序处理和头尾的增删操作处理解决方案

数组的处理很常见,下面列举针对不同情况下的一些解决方案:

array_reverse(返回一个单元顺序相反的数组):换言之就是把数组顺序进行倒序处理。

    

rsort(对数组逆向排序):同样是一个数组顺序进行倒序处理的方法。

     $val) {
            echo "$key = $val
";
        }
    ?>

reset(获取数组第一个“首元素”):简单来讲就是将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。

相同的方法有:current() - 返回数组中的当前单元。


"; // "step one"
    
    // skip two steps
    next($array);
    next($array);
    echo current($array) . "
"; // "step three" // reset pointer, start again on step one reset($array); echo current($array) . "
"; // "step one" ?>

end(获取最后一个“尾元素”):简单来讲就是将数组的内部指针移动到最后一个单元并返回其值。

    

array_shift(删除开头的单元元素):简单来讲就是将数组的第一个单元移出并作为结果返回,将数组的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

    

array_pop(删除尾部单元元素):简单来讲就是弹出并返回数组的最后一个单元,并将数组 array 的长度减一。如果数组为空(或者不是数组)将返回空值。

    

总结一下,处理数组排序和数组收尾元素PHP都提供了不错的方法,我们直接用就可以了,但是根据不同的使用场景有不同的处理方案,大家有什么经历心得可以分享一下,同时欢迎指正我的错误。

分享总结

我比较笨,记不起太多了,今天先写到这里,日后还会更新,分享这些不仅仅是对我自己的一个知识的归纳总结,也是希望能帮到很多入门的小师弟们,希望这篇文章对你们有所帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21231.html

相关文章

  • Eclipse被卡死了或者失去响应了后分析根源的一个小技巧

    摘要:没有经验的朋友可能会用任务管理器强制结束进程,抱着侥幸的心理一次又一次得重试,希望这个卡死或者失去响应的问题可以不再出现,但往往事与愿违。本文介绍的这个通用办法适用于一切不能正常工作时的故障排查和分析。 提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Win...

    王陆宽 评论0 收藏0
  • Eclipse被卡死了或者失去响应了后分析根源的一个小技巧

    摘要:没有经验的朋友可能会用任务管理器强制结束进程,抱着侥幸的心理一次又一次得重试,希望这个卡死或者失去响应的问题可以不再出现,但往往事与愿违。本文介绍的这个通用办法适用于一切不能正常工作时的故障排查和分析。 提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Win...

    liukai90 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    caspar 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    nihao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    Drummor 评论0 收藏0

发表评论

0条评论

mikasa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<