ホームページ >バックエンド開発 >PHPチュートリアル >単純な正規表現置換に関連する問題

単純な正規表現置換に関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:28:43970ブラウズ

简单正则表达式替换问题
从其它地方看到一个题目:

在 HTML 语言中,页面头部的 meta 标记可以用来输出文件的编码格式,以下是一个标准的 meta 语句

请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5
请注意:
1. 需要处理完整的 html 页面,即不光此 meta 语句
2. 忽略大小写
3. ' 和 " 在此处是可以互换的
4. 'Content-Type' 两侧的引号是可以忽略的,但 'text/html; charset=gbk' 两侧的不行
5. 注意处理多余空格

首先想到的是正则表达式替换,如下所示:

PHP code
<!--

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,也就是说替换不成功,将匹配部分替换为了空



以上正则替换,哪里有问题,求指点!

------解决方案--------------------
没有问题
PHP code
$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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。