加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 正则表达式匹配逗号之间的文本

发布时间:2020-12-13 17:45:59 所属栏目:PHP教程 来源:网络整理
导读:我疯狂地试图让正则表达式检测用户输入中的关键字垃圾邮件.通常在开头有一些普通文本,在结尾有一些关键字垃圾邮件,用逗号或其他字符分隔. 我需要的是一个正则表达式来计算关键字的数量来标记文本供人检查. 文本通常是这样的: [random text,with commas,dots
我疯狂地试图让正则表达式检测用户输入中的关键字垃圾邮件.通常在开头有一些普通文本,在结尾有一些关键字垃圾邮件,用逗号或其他字符分隔.

我需要的是一个正则表达式来计算关键字的数量来标记文本供人检查.

文本通常是这样的:

[random text,with commas,dots and all]

keyword1,keyword2,keyword3,keyword4,keyword5,Keyword6,keyword7,keyword8...

我已经尝试了几个正则表达式来计算匹配:

– 这只得到两个关键字中的一个

[,-](w|s)+[,-]

– 这也匹配随机文本

(?:([^,-]*)(?:[^,-]|$))

谁能告诉我一个正则表达式这样做?或者我应该采取不同的方法?

谢谢!

解决方法

我认为难点在于随机文本也可以包含逗号.

如果关键字全部在一行上并且它是整个文本的最后一行,请修剪整个文本,从末尾删除新的行字符.然后从最后一个新行字符到结尾.这应该是包含关键字的字符串.一旦你将这部分单独挑出,你可以在逗号上爆炸字符串并计算部分.

<?php
$string = " some gibberish,some more gibberish,and random text

keyword1,keyword3

";

$lastEOL = strrpos(trim($string),PHP_EOL);
$keywordLine = substr($string,$lastEOL);
$keywords = explode(',',$keywordLine);

echo "Number of keywords: " . count($keywords);

我知道这不是一个正则表达式,但我希望它有所帮助.

找到解决方案的唯一方法是找到将随机文本与关键字中不存在的关键字分开的内容.如果关键字中存在新行,则无法使用它.但是连续2个新线?或任何其他角色.

$string = " some gibberish,keyword6,keyword8,keyword9

";

$lastEOL = strrpos(trim($string),PHP_EOL . PHP_EOL); // 2 end of lines after random text
$keywordLine = substr($string,$keywordLine);

echo "Number of keywords: " . count($keywords);

(编辑:添加更多新行的示例 – 远射)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读