Rumah > Artikel > pembangunan bahagian belakang > 正则表达式中文匹配问题
如何在下面的表达式中匹配出“示例页面“并读出结果?现在读出是乱码。
<?phpheader("Content-Type:text/html;charset=utf-8"); $subject="世界,您好!示例页面safdasfdasfdsafaf0808080势";$pattern='/[示例页面42424242432def42242342示例页面dsadfa]/';preg_match($pattern,$subject,$matches);echo $matches[0];?>
什么意思?匹配出示例页面就直接写就行了啊。
$pattern='/示例页面/';
$pattern='/[示例页面42424242432def42242342示例页面dsadfa]/ u';
什么意思?匹配出示例页面就直接写就行了啊。
$pattern='/示例页面/';
$pattern='/[示例页面42424242432def42242342示例页面dsadfa]/ u';
对呀!你就是这么做的
1、方括号的是字符列表,比配的就是单个字符
加 u 修饰是为了把 utf-8 汉字当作字符看待
2、preg_match 是只取第一组匹配的结果,preg_match_all 才是取所有匹配的结果
对呀!你就是这么做的
1、方括号的是字符列表,比配的就是单个字符
加 u 修饰是为了把 utf-8 汉字当作字符看待
2、preg_match 是只取第一组匹配的结果,preg_match_all 才是取所有匹配的结果
对呀!你就是这么做的
1、方括号的是字符列表,比配的就是单个字符
加 u 修饰是为了把 utf-8 汉字当作字符看待
2、preg_match 是只取第一组匹配的结果,preg_match_all 才是取所有匹配的结果
如果你要匹配到词组 示例页面
那就简单的 $pattern='/示例页面/';
如果你要匹配到词组 示例页面
那就简单的 $pattern='/示例页面/';
那有什么?
你要的不就是这样吗
$subject = "世界,您好!示例页面safdasfdasfdsafaf0808080势";$pattern = '/示例页面/';if(preg_match($pattern, $subject)) echo '包含';
或是
$subject = "世界,您好!示例页面safdasfdasfdsafaf0808080势";$pattern = '/示例页面.+/';if(preg_match($pattern, $subject, $matches)) { echo ,$matches[0];}
或是
$subject = "世界,您好!示例页面safdasfdasfdsafaf0808080势";$pattern = '/示例页面.+/';if(preg_match($pattern, $subject, $matches)) { echo ,$matches[0];}
$subject="世界,您好!示例页面safdasfdasfdsafaf0808080势";$pattern='/[示例页面42424242432def42242342示例页面dsadfa]/';preg_match($pattern,$subject,$matches);if (preg_match){echo '成功';}
或者这么看吧:
$subject="世界,您好!示例页面safdasfdasfdsafaf0808080势";$pattern='/[示例页面424世界,您好24242432de势f42242342示例页面dsadfa]/';preg_match($pattern,$subject,$matches);if (preg_match){echo '成功'.'$matches[0]'.'$matches[1]','$matches[2]'}//$matches[0]应该输出示例页面,$matches[1]应该输出世界,您好,$matches[2]输出势
那是不可能的!
那是不可能的!
那是不可能的!
//首先调出数据库中的title $linktitle=$wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish'"); $nums=rand(1,38); $post_title=$linktitle[$nums]->post_title;//里面有38个值 if ($post_title){ //如果这38个值里有任意一个在文章中出现,则执行以下函数操作 $replace = array( $post_title => '<a href="http://host-7:8888/wiki/'.$post_title.'" >'.$post_title.'</a>', ); $text = str_replace(array_keys($replace), $replace, $text);} return $text;
你是要做关键次匹配?
你是要做关键次匹配?
$pattern = "/世界,您好|示例页面|势/";
拼接这样的字符串,应该不是难事吧?
$pattern = "/世界,您好|示例页面|势/";
拼接这样的字符串,应该不是难事吧?
少时,也不是人工拼接,而是用 join 连接数组元素为字符串
多时,就要改还思路:不是检查关键词是否包含在内容中,而是检查内容中含有那些关键词
这个用 trie 树就轻松搞定(精华区中有)
少时,也不是人工拼接,而是用 join 连接数组元素为字符串
多时,就要改还思路:不是检查关键词是否包含在内容中,而是检查内容中含有那些关键词
这个用 trie 树就轻松搞定(精华区中有)
$linktitle=$wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish'"); // //遍历KEY $i=0; while($i<38){ $pattern[$i]='/'.$linktitle[$i]->post_title.'/'; $replace[$i]='this is replace result'; $i++; } $content=preg_replace($pattern, $replace, $content) return $content;
我这个也是正则表达式,是不是一样的啊,代码太多就不打了。http://www.manonggu.com/biancheng/391