600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 正则表达式中文匹配问题

正则表达式中文匹配问题

时间:2022-06-02 13:26:27

相关推荐

正则表达式中文匹配问题

后端开发|php教程

正则表达式中文匹配问题

后端开发-php教程

如何在下面的表达式中匹配出“示例页面“并读出结果?现在读出是乱码。

手游直播php源码,ubuntu新建网络,java爬虫页面pdf,php日志插件,莆田seo鉴定lzw

图片管理软件 源码,ubuntu无设置中文,爬虫技术抓取简历,php压缩实例,广西seo定制lzw

oa系统 asp源码,vscode镜像冲突,樱花内网穿透ubuntu版,tomcat不关闭,安卓sqlite解密,仿ios时间插件,博客园 前端框架,淘宝商品太多爬虫,手机网站 php,淘宝seo有用吗,视频上传分享网站源码下载,科技网页,dz 模板 带数据,ecshop 二级页面,人力资源管理系统 php,禾匠小程序装修lzw

回复讨论(解决方案)

什么意思?匹配出示例页面就直接写就行了啊。

$pattern=’/示例页面/’;

$pattern=’/[示例页面42424242432def42242342示例页面dsadfa]/ u’;

什么意思?匹配出示例页面就直接写就行了啊。

$pattern=’/示例页面/’;

因为在项目中“示例页面”这样的字符串存在于其他中文字符内。

$pattern=’/[示例页面42424242432def42242342示例页面dsadfa]/ u’;

谢谢版主回复 ,可是加了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 才是取所有匹配的结果

这是 preg match all 的结果,还是不行呀

array(1) { [0]=> array(21) { [0]=> string(3) “示” [1]=> string(3) “例” [2]=> string(3) “页” [3]=> string(3) “面” [4]=> string(1) “s” [5]=> string(1) “a” [6]=> string(1) “f” [7]=> string(1) “d” [8]=> string(1) “a” [9]=> string(1) “s” [10]=> string(1) “f” [11]=> string(1) “d” [12]=> string(1) “a” [13]=> string(1) “s” [14]=> string(1) “f” [15]=> string(1) “d” [16]=> string(1) “s” [17]=> string(1) “a” [18]=> string(1) “f” [19]=> string(1) “a” [20]=> string(1) “f” } }

如果你要匹配到词组 示例页面

那就简单的 $pattern=’/示例页面/’;

如果你要匹配到词组 示例页面

那就简单的 $pattern=’/示例页面/’;

问题是,实际项目中这个‘示例页面’不是单独出现的,他是一个对象数组的结果。就是把好多类似‘示例页面’(‘示例页面1’、‘示例页面2’等等)这样的字符串放到了一起,然后拿去和$subject=”世界,您好!示例页面safdasfdasfdsafaf0808080势”;匹配,看$subject是否包含‘示例页面’、‘示例页面1’、‘示例页面2’等中的任何一个,如果返回TRUE,则把匹配到的结果取出来备做他用。

那有什么?

你要的不就是这样吗

$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]输出势

那是不可能的!

那是不可能的!

哦,那就是说我要想办法把/[示例页面424世界,您好24242432de势f42242342示例页面dsadfa]/分隔开然后一个个拿去对了?

那是不可能的!

正则用不了,那下面的情况怎么实现,求版主给个思路;

假设有个数组$A,里面放了38组数据,如何一次性随机取出38个值 ?

如下代码所示:

//首先调出数据库中的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 => \.$post_title.\,); $text = str_replace(array_keys($replace), $replace, $text);}return $text;

你是要做关键次匹配?

你是要做关键次匹配?

大概是这样的意思,在文章中找到所有包含在$linktitle中的关键词,然后再运行替换。

$pattern = “/世界,您好|示例页面|势/”;

拼接这样的字符串,应该不是难事吧?

$pattern = “/世界,您好|示例页面|势/”;

拼接这样的字符串,应该不是难事吧?

少了可以这样人工拼接,但实际情况会有上万个。。。。

少时,也不是人工拼接,而是用 join 连接数组元素为字符串

多时,就要改还思路:不是检查关键词是否包含在内容中,而是检查内容中含有那些关键词

这个用 trie 树就轻松搞定(精华区中有)

少时,也不是人工拼接,而是用 join 连接数组元素为字符串

多时,就要改还思路:不是检查关键词是否包含在内容中,而是检查内容中含有那些关键词

这个用 trie 树就轻松搞定(精华区中有)

成功了,不过没用你说的那个,是这样写的:

$linktitle=$wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_status = publish\"); // //遍历KEY $i=0; while($ipost_title./; $replace[$i]= his is replace result; $i++; } $content=preg_replace($pattern, $replace, $content) return $content;

我这个也是正则表达式,是不是一样的啊,代码太多就不打了。/biancheng/391

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。