很多时候,我们使用php的函数处理一些比较复杂的字符的时候会很头疼,因为你可能需要循环很多很多遍,还有用分割函数分割很多遍,有的时候还达不到效果,php默认的执行最长时间是30秒,可能这样的处理都不够用,需要改配置,但是这样真的不是很好,而为了解决这个问题,php引入了正则,php的正则有两种,这里我用的是perl语言中的,这也是php最通用最好用的正则方式。这里我总结了一个看兄弟连的视频的时候总结的一个正则修改配置文件的方法,这就是很多系统的系统设置中的功能,可以后台编辑配置文件。不过前提是你对文件有读写权限。
首先我们建一个配置文件config.php,里面的代码如下。
1 2 3 4 5 6 |
<?php define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PWD', '123456'); define('DB_NAME', 'gg__guang__gao'); ?> |
再者我们建一个2.php来读取这些数据并修改
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $key = array('DB_HOST'=>'服务器','DB_USER'=>'用户','DB_PWD'=>'密码','DB_NAME'=>'数据库'); //这里我之前提到过,是将文件的内容整体付给一个字符变量 $info = file_get_contents('config.php'); //这里就是正则匹配,括号里的是匹配中的小匹配 preg_match_all ("/define\(\'(.*?)\', \'(.*?)\'\)/",$info, $a); echo '<form name=form action="3.php" method="POST">'; foreach($a[1] as $k=>$v){ echo "{$key[$v]}<input type='text' name='{$v}' value='{$a[2][$k]}'><br /><br />"; } echo '<input type="submit" value="提交">'; echo '</form>'; ?> |
最后我们写个提交后的处理文件3.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php echo '<pre>'; //var_dump($_POST); echo '</pre>'; $a = $_POST; $info = file_get_contents('config.php'); foreach($a as $k=>$v){ //这个正则中的替换函数,所谓的修改,因为一次只能替换一处,所以我们用循环,不断的替换 $info = preg_replace("/define\(\'{$k}\', \'(.*?)\'\)/","define('{$k}', '{$v}')",$info); } file_put_contents('config.php',$info); echo '成功!'; echo '<a href="2.php">返回</a>'; ?> |
其实正则并没有那么复杂,里面的规则也不要去背,经常的使用就可以了。
本文链接:http://www.521php.com/archives/163/
程序本天成,妙手偶得之!我们只是代码的搬运工!
转载请注明:http://www.521php.com/archives/163/