接触PHP差很少2年,从懵懂到入门,再到追求稳定高效的高阶级学习,我慢慢的积累一些PHP编程经验,我本人记性很差,因此把这些经验记下来,慢慢累积,乐自助人,何乐不为呢?下面是我面对一些问题所采起处理解决方案,但愿对你们有所帮助,同时也欢迎你们指正。php
普通的字符串截取,通常采用substr()或者mb_substr(),须要说明的是substr()和mb_substr()仅限于英文阿拉伯数字的处理,对中文的截取处理是很不友好的,不只涉及到字符编码gbk和utf-8的区分,还有一些乱码状况,所以对于字符串的截取,特别是包含中文的字符串,首推正则匹配处理,下面附上解决方案的案例:html
<?php /** * * @version 1.0 * @desc 处理一些特殊字符串的一些方法,比较多的是采用正则匹配的方法 * @author Rongx * @since 2015.11.26 * */ // * 匹配xxx-xxx和xxx的状况 $url1 = '/college/pku/'; $url2 = '/college/pku-aaa/'; preg_match_all ( '|/college/(\w+(\-\w+)?)|i', $url2, $urlArray ); echo "<pre>"; print_r($urlArray); // * 匹配获取中文()里面的内容 header("Content-type: text/html; charset=utf-8"); $title = "不知道什么鬼的学校(北京大学,南京大学)"; preg_match_all( '/((.+?))/', $title, $resultArr); echo '目标字段:' . $title . '<br>'; echo "<pre>"; print_r($resultArr); // * 匹配字符串内的指定中文字符 header("Content-type: text/html; charset=utf-8"); $chstr = "交通运输大类"; $match = "/类|类大/"; $chstr = preg_replace($match,"",$chstr); echo $chstr; ?>
固然了,字符串处理还有其余办法,不过我通常是用上述两种,要不正则匹配,要不字符串截取,若是你有更好更优的解决方案,欢迎分享你的解决方案。编程
数据写入文本,通常有两种状况,要不就是字符串写入文本,要不就是数组(一维或者多维)写入文本。json
写入文本的方法有fwrite()和file_put_contents(),我通常选择后者。数组
保证数据写入文本时是一个字符串,因此处理一维或者多维数组时,建议使用json格式封装数组数据,读取的时候解析json便可。服务器
<?php // * 写入文本 $data_json = json_encode ( $data );// 写入文本时file_put_contents方法只能将一个字符串写入文件,如选择json格式 FileClass::checkDir ( AUTO_SYNC_PATH . 'rongxDemo/' ); // 检查目录是否存在 $fileName = AUTO_SYNC_PATH . 'rongxDemo/' . "data.txt"; // 组装文件绝对路径,数据写入文本时文本的路径必须是绝对路径,不能是相对路径 $file = file_put_contents ( $fileName, $data_json ); // 写入数据 ?>
这是一个简单的数据写入文本的案例,我有一个数组数据,我须要写入一个文本保存在服务器上,那么我首先要肯定我要把文件存在哪里?肯定好文本存储路径后,对数据进行转义处理,通常我会进行json转义处理,变成字符串后调用file_put_contents()方法进行数据写入文本操做,最终数据以json字符串的方式存储到服务器我指定的路径下。app
这里简单介绍一下file_put_contents()方法,中文解释就是将一个字符串写入文件,它有4个参数:file_put_contents();这里他们分别表示:要被写入数据的文件名,要写入的数据,通常来说后面2个参数是不会用到的,因此咱们肯定好文件名和数据就能够 这个方法了,下面附上一个PHP官网的案例:学习
<?php $file = 'people.txt'; // Open the file to get existing content $current = file_get_contents($file); // Append a new person to the file $current .= "John Smith\n"; // Write the contents back to the file file_put_contents($file, $current); ?>
读取文本的方法有fopen()和file_get_contents(),我通常选择后者。ui
读文本数据时必须保证路径是绝对路径。编码
有须要可能会用到
<?php // * 读取文本 FileClass::checkDir ( AUTO_SYNC_PATH . 'rongxDemo/' ); // 检查目录是否存在 $fileName = AUTO_SYNC_PATH . 'rongxDemo/' . "data.txt"; // 组装文件绝对路径,数据读取文本时文本的路径也是要求是绝对路径 // 判断文件是否存在 if (file_exists ( $fileName )) { $file_data = file_get_contents ( $fileName ); // 读取文本数据 } $data = json_decode ( $file_data ); // 解析json封装过的数据 ?>
这里是一个简单的文本数据读取的案例,我在肯定一个文本路径后,调用file_get_contents()方法进行文本数据读取,从而得到文本数据,期间有必要还须要个json或者其余编码转义处理。
这里简单介绍一下file_get_contents()方法,中文解释就是将整个文件读入一个字符串,它有5个参数:file_get_contents();这里他们分别表示:要读取的文件的名称,另指路径,后面三个参数基本不会用到,甚至第二个参数都不多见,因此重点是肯定你要读取文件的路径,是绝对路径。下面附上PHP官网的例子:
<?php // <= PHP 5 $file = file_get_contents('./people.txt', true); // > PHP 5 $file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH); ?>
总结一下读写文本的处理,通常来说,渡读和写是相互相成的,你须要肯定你的文本存放路径(目录位置),由于不管读仍是写,你都是操做那个目录下的文件,对于同一个业务来说,因此有了路径以后,接下来就是数据处理,通常来说我建议在数据在写入文本前先进行字符串转换,由于数据写入文本的方法对字符串类型的数据更加友好,能避免出现数据丢失的状况。若是你们有什么更好的处理方案,欢迎分享,同时欢迎指正个人问题。
数组的处理很常见,下面列举针对不一样状况下的一些解决方案:
array_reverse(返回一个单元顺序相反的数组):换言之就是把数组顺序进行倒序处理。
<?php // array_reverse()的使用案例 $input = array("php", 4.0, array("green", "red")); $result = array_reverse($input); $result_keyed = array_reverse($input, true); ?>
rsort(对数组逆向排序):一样是一个数组顺序进行倒序处理的方法。
<?php // rsort()的使用案例 $fruits = array("lemon", "orange", "banana", "apple"); rsort($fruits); foreach ($fruits as $key => $val) { echo "$key = $val\n"; } ?>
reset(获取数组第一个“首元素”):简单来说就是将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。
相同的方法有:current() - 返回数组中的当前单元。
<?php // reset()的使用案例 $array = array('step one', 'step two', 'step three', 'step four'); // by default, the pointer is on the first element echo current($array) . "<br />\n"; // "step one" // skip two steps next($array); next($array); echo current($array) . "<br />\n"; // "step three" // reset pointer, start again on step one reset($array); echo current($array) . "<br />\n"; // "step one" ?>
end(获取最后一个“尾元素”):简单来说就是将数组的内部指针移动到最后一个单元并返回其值。
<?php // end()的使用实例 $fruits = array('apple', 'banana', 'cranberry'); echo end($fruits); // cranberry ?>
array_shift(删除开头的单元元素):简单来说就是将数组的第一个单元移出并做为结果返回,将数组的长度减一并将全部其它单元向前移动一位。全部的数字键名将改成从零开始计数,文字键名将不变。
<?php // array_shift()的使用案例 $stack = array("orange", "banana", "apple", "raspberry"); $fruit = array_shift($stack); print_r($stack); ?>
array_pop(删除尾部单元元素):简单来说就是弹出并返回数组的最后一个单元,并将数组 array 的长度减一。若是数组为空(或者不是数组)将返回空值。
<?php // array_pop()的使用案例 $stack = array("orange", "banana", "apple", "raspberry"); $fruit = array_pop($stack); print_r($stack); ?>
总结一下,处理数组排序和数组收尾元素PHP都提供了不错的方法,咱们直接用就能够了,可是根据不一样的使用场景有不一样的处理方案,你们有什么经历心得能够分享一下,同时欢迎指正个人错误。
我比较笨,记不起太多了,今天先写到这里,往后还会更新,分享这些不只仅是对我本身的一个知识的概括总结,也是但愿能帮到不少入门的小师弟们,但愿这篇文章对大家有所帮助。