Pages
Categories
Archives
-
Recent Posts
Recent Comments
I’m reading
Tags
Blogroll
MyFriends
Meta
-
-
标签归档:PHP
腾讯的一道面试题(截取字符串)
题目如下: 假设有“123<em>abc</em>456<em>def</em>789”这么一个字符串,写一个函数,可以传入一个字符串,和一个要截取的长度。返回截取后的结果。 要求: 1、<em>和</em>标记不得计算在长度之内。 2、截取后的字符串,要保留原有<em>标签,不过如果最后有一个标签没有闭合,则去掉其开始标签。 示例: 题中的字符串,要截取长度5,则返回的字符串应该为:123ab;要截取长度8,应返回123<em>abc</em>45。 看到题目后,脑海中首先想到的就是用栈来解决。 代码写得很快,实现起来很简单。但是仔细琢磨一下的话,很容易发现还是有很多问题的。 比如对于一些不需要关闭的标签(如:<br />),这段代码会出现问题。 我先把今天写的代码贴出来,等清闲了再容我仔细推敲一下。 function getSubstr($str, $length) { $result = ”; $tag = ”; $stack = array(); for($i = 0; $i < $length; $i++) { $result .= $str[$i]; if ($str[$i] == ‘<’) … 继续阅读
phpMyAdmin中的UTF8中文乱码
基本上做过Web开发的朋友都有过和乱码做斗争的经历吧,而写PHP搭配MySQL的绝大多数朋友会选择phpMyAdmin这个工具。那么今天我们来谈谈在phpMyAdmin中可能遇到的一种UTF-8中文乱码的问题。 问题描述:网站采用UTF-8编码,前台浏览正常,在phpMyAdmin里查看中文变成乱码。 一般来说,我们安装的Web服务器软件,例如Apache,默认的编码都不是UTF-8。当我们从以UTF-8编码的页面中的表单输入数据的时候,因为在我们输入的时候这些数据本身是用UTF-8编码的,而当表单提交的时候这些用UTF-8编码的数据会经过数据库的处理后再存入表中,所以它会把这些UTF-8编码的数据以其默认编码存入到数据库中,于是变成了乱码。这些乱码仍然是用UTF-8编码的,只是被数据库的默认编码给弄乱了。这也就可以解释为什么我们在网站的前台读取数据的时候却能够看到正常的中文字符串。 在这种情况下,不管我们在phpMyAdmin中将字段的整理改成utf8_general_ci、utf8_unicode_ci或latin1_swedish_ci等编码都是没用的,看到的只能是乱码而不能读出正常的中文字符串。 如果你想要在phpMyAdmin中也看到正常的中文,下面我提供两种解决方案: 1、更改MySQL的默认编码 1.1、Linux环境下 找到 /etc/my.cnf 只需要对该文件的两个地方做如下修改就可以将MySQL的默认编码改成UTF-8 [mysqld] default-character-set=utf8 [client] default-character-set=utf8 1.2、Windows环境下 如果你使用的是Windows,那么在MySQL的配置文件my.ini里做上述同样的就该即可。 2、通过程序限定MySQL的数据传输编码 在连接数据库时加入如下代码,就可以告知MySQL采用UTF-8编码传输数据了: mysqli_query($dbc, “SET NAMES ‘UTF8′”); 如下图所示 通过如上任意一种修改,你就可以解决在phpMyAdmin里中文显示为乱码的问题啦。
关于php处理多选框checkbox的方法
PHP要求同名表单元素用数组形式命名,并赋予value。否则他不能分解。 例: <input type=checkbox name=”chk[]” value=1> <input type=checkbox name=”chk[]” value=2> <input type=checkbox name=”chk[]” value=3> 提交后,用$_POST['chk']访问。数组中的元素为选中的复选框的值 PHP代码: <?php foreach( $_POST["chk"] as $i=>$a ) { echo $i.”==>”.$a.”<br />”; } //或者使用$_POST["chk"][0]单独使用 ?> 结果: 0=>1 1=>2 2=>3