从其它地方看到一个题目:
在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句
<META http-equiv='Content-Type' content='text/html; charset=gbk'>
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
请注意:
1. 需要处理完整的 html 页面,即不光此 meta 语句
2. 忽略大小写
3. ' 和 " 在此处是可以互换的
4. 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
5. 注意处理多余空格
首先想到的是正则表达式替换,如下所示:
- PHP code
$content = "ab<meta http-equiv='Content-Type' content='text/html; charset=gbk'>b";//模拟html代码中的<meta>//preg_match('/<meta([^>]+)charset=[a-zA-Z-0-9]+([\'"])>/i',$content,$matches);//var_dump($matches);//此句说明可以匹配到preg_replace('/<meta([^>]+)charset=[a-zA-Z-0-9]+([\'"])>/i',"<meta\\1charset=big5\\2>",$content);echo $content; //输出abb,也就是说替换不成功,将匹配部分替换为了空
以上正则替换,哪里有问题,求指点!
------解决方案--------------------
没有问题
- PHP code
$content = preg_replace('/<meta([^>]+)charset=[a-zA-Z-0-9]+([\'"])>/i',"<meta\\1charset=big5\\2>",$content);echo '<pre>';echo $content;