ホームページ >バックエンド開発 >PHPチュートリアル >単純な正規表現置換に関連する問題
简单正则表达式替换问题
从其它地方看到一个题目:
在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句
请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
请注意:
1. 需要处理完整的 html 页面,即不光此 meta 语句
2. 忽略大小写
3. ' 和 " 在此处是可以互换的
4. 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
5. 注意处理多余空格
首先想到的是正则表达式替换,如下所示:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $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,也就是说替换不成功,将匹配部分替换为了空
$content = preg_replace('/<meta([^>]+)charset=[a-zA-Z-0-9]+([\'"])>/i',"<meta\\1charset=big5\\2>",$content); echo '<pre class="brush:php;toolbar:false">'; echo $content; <div class="clear"> </div>