草庐IT

php - 如何防止使用 Regex 删除斜杠?

我不知道如何更改下面的正则表达式以保留斜杠。我想确保它只包含字母、数字、下划线、破折号和斜线。($query类似于/offer/some-offer-bla-bla-bla)$query=preg_replace('/[^-a-zA-Z0-9_]/','',$query);谢谢 最佳答案 只需在字符类中包含/即可。但是由于您使用/作为正则表达式分隔符,您需要将其转义以及\/:$query=preg_replace('/[^-a-zA-Z0-9_\/]/','',$query);^^你可以通过使用\w代替[a-zA-Z0-9_]来缩短

php - 忽略正则表达式模式中的重复项

我有一个正则表达式模式可以在文本文件中搜索单词。如何忽略重复项?例如,看看这段代码$pattern='/(lorem|ipsum|daboom|pahwal|ababaga)/i';$num_found=preg_match_all($pattern,$string,$matches);echo"$num_foundmatch(es)found!";echo"Matchedwords:".implode(',',$matches[0]);如果我在文章中有多个说lorem,输出将是这样的5matchesfound!Matchedwords:daboom,lorem,lorem,lorem

php - 在 RegEx (PCRE) 中的上一场比赛结束时继续

我试图阻止\Ganchor匹配字符串的开头。我只希望它在最后一个正则表达式匹配结束时匹配。给定以下文本:Pig,Cow,Goatfruit:apple,orange,peach,pearvegetable:Carrot,Lettuce,Cellery这个模式:(fruit:|\G)([\w]+|[\,])我希望它只匹配“fruit:”之后的单词,但我需要它单独捕获每个单词。如果我只是把+放在这个模式的最后,它会匹配“fruit:”之后的所有词,但它只会捕获“pear”,因为+的每次迭代都会踩到最后一个。问题来了。这种模式有效,除了它还匹配“Pig,CowandGoat”,因为\G将匹配

php - 用于检测连续数字的正则表达式 - 不适用于非英语输入

大家好,我有这段代码可以检查5个或更多连续数字:if(preg_match("/\d{5}/",$input,$matches)>0)returntrue;它适用于英语输入,但当输入字符串包含阿拉伯语/多字节字符时它会出错-即使输入文本中没有数字,它有时也会返回true。有什么想法吗? 最佳答案 您似乎在使用PHP。这样做:if(preg_match("/\d{5}/u",$input,$matches)>0)returntrue;注意表达式末尾的“u”修饰符。它告诉preg_*使用unicode模式进行匹配。

php - 如何将文本 URL 转换为 PHP 页面中的可点击链接?

我确信这是一个非常简单、明显的答案,但我的大脑被炸了,我似乎无法理解。我有一个PHP站点,允许用户将信息发布到mySQL中的文本字段。这些帖子都可以在线查看。该字段在发布/编辑模式下是HTML表单中的文本区域,在阅读模式下是静态文本。用户希望能够在他们的帖子中包含一个URL并将其显示为可点击的链接,而不必在该字段中包含HTML(我不希望他们能够这样做-太冒险了。)所以这是在显示数据时需要做的事情,而不是在保存到数据库时将html插入文本。显示代码非常简单:$query="SELECT*FROMmeetingswhereid=".$_GET['id'];$result=mysqli_qu

php - preg_replace 正则表达式问题

我正在尝试清理一个字符串。我只需要允许大写/小写字母数字空格、制表符、回车符这些字符:_-+*()[]!#?.,;:'"其他一切都需要告别。我该怎么做?我有这个,它适用于大写/小写字母、数字和空格。但是不知道制表符、回车、特殊字符怎么算?$str=preg_replace('/[^a-z0-9]/i','',$str); 最佳答案 尝试$str=preg_replace('/[^\w\r\n\t+*()[\]!#?.\,;:\'"-]/','',$str); 关于php-preg_rep

php - 正则表达式换行

我正在尝试替换2个标签之间的所有内容,但我无法构建正确的表达式。这就是我所做的:/(.*|\n*)/我希望它捕获任何字符,包括换行符。这是我需要捕获的示例:SomeTitleSometext你们中的一些人能告诉我我做错了什么吗?这是RegExr的链接和内容的完整示例:http://regexr.com?2t4n1 最佳答案 '#.#m'm表示MULTILINE,它使得点可以匹配换行符=换行符\n编辑:经过眼尖脑补,分明是'#.+#s'编辑2:正如MichaelGoldshteyn所说,这应该有效$ch='\s+SomeTitle\s

php - 正则表达式仅允许在以 's 结尾的单词中使用撇号

我正在读取一些文件,我需要删除字符串中的所有撇号,以's结尾的单词除外。例子:Frank'sbluecar->Frank'sbluecarFrank'blue'car->Frankbluecar'Frank'sbluecar->Frank'sbluecarFrank's'blue'car->Frank'sbluecar'Frankbluecar'->FrankbluecarFrank'blue'car->Frankbluecar预先感谢您的帮助!编辑:修改后的问题,因为我只需要以's结尾的单词来保留撇号,而不仅仅是单数所有格。 最佳答案

php - 正则表达式仅当它作为较大单词的一部分出现时才匹配单词后缀?

以下正则表达式匹配单词或单词片段的尾随“s”:/s\b/i如果尾部s是较大单词的一部分,是否可以只匹配它?也就是比如匹配了字符串“words”中的后缀s,但是如果有人自己输入一个字符串“s”,则匹配不上。谢谢你的建议 最佳答案 像这样\w修补任何“单词”字符后跟s后跟单词边界/\ws\b/i 关于php-正则表达式仅当它作为较大单词的一部分出现时才匹配单词后缀?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

php - 如何将一些嵌套结构与正则表达式匹配?

例如,我有这样一个字符串:{%a%}{%b%}{%end%}{%end%}我想获取{%a%}和{%end%}之间的内容,即{%b%}{%end%}.我曾经使用{%\S+%}(.*){%end%}来做到这一点。但是当我在其中添加c时:{%a%}{%b%}{%end%}{%end%}{%c%}{%end%}它不起作用...我怎么能用正则表达式做到这一点? 最佳答案 鉴于此测试数据:$text='{%a%}{%b%}{%a%}{%end%}{%end%}{%b%}{%end%}{%end%}{%c%}{%end%}';这个经过测试的脚本可