我正在尝试清理一个字符串。我只需要允许大写/小写字母数字空格、制表符、回车符这些字符:_-+*()[]!#?.,;:'"其他一切都需要告别。我该怎么做?我有这个,它适用于大写/小写字母、数字和空格。但是不知道制表符、回车、特殊字符怎么算?$str=preg_replace('/[^a-z0-9]/i','',$str); 最佳答案 尝试$str=preg_replace('/[^\w\r\n\t+*()[\]!#?.\,;:\'"-]/','',$str); 关于php-preg_rep
我正在尝试替换2个标签之间的所有内容,但我无法构建正确的表达式。这就是我所做的:/(.*|\n*)/我希望它捕获任何字符,包括换行符。这是我需要捕获的示例:SomeTitleSometext你们中的一些人能告诉我我做错了什么吗?这是RegExr的链接和内容的完整示例:http://regexr.com?2t4n1 最佳答案 '#.#m'm表示MULTILINE,它使得点可以匹配换行符=换行符\n编辑:经过眼尖脑补,分明是'#.+#s'编辑2:正如MichaelGoldshteyn所说,这应该有效$ch='\s+SomeTitle\s
我正在读取一些文件,我需要删除字符串中的所有撇号,以's结尾的单词除外。例子:Frank'sbluecar->Frank'sbluecarFrank'blue'car->Frankbluecar'Frank'sbluecar->Frank'sbluecarFrank's'blue'car->Frank'sbluecar'Frankbluecar'->FrankbluecarFrank'blue'car->Frankbluecar预先感谢您的帮助!编辑:修改后的问题,因为我只需要以's结尾的单词来保留撇号,而不仅仅是单数所有格。 最佳答案
以下正则表达式匹配单词或单词片段的尾随“s”:/s\b/i如果尾部s是较大单词的一部分,是否可以只匹配它?也就是比如匹配了字符串“words”中的后缀s,但是如果有人自己输入一个字符串“s”,则匹配不上。谢谢你的建议 最佳答案 像这样\w修补任何“单词”字符后跟s后跟单词边界/\ws\b/i 关于php-正则表达式仅当它作为较大单词的一部分出现时才匹配单词后缀?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow
例如,我有这样一个字符串:{%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%}';这个经过测试的脚本可
我需要这样的url:https://www.domain.com/m/281/[imagename].jpg然后把它变成这样:http://www.NEWdomain.com/images/[imagename].jpg我需要对许多url执行此操作,因此我想编写一个快速的php脚本以将url放入数组中,然后循环更改域名并删除原始url中的文件结构。并非所有原始网址都是/m/281有些略有不同。我想我可以为https://www.domain.com做一个str_replace到http://www.NEWdomain.com,但我不知道如何将url中的不同/m/281/更改为我的文件结
我有一个功能可以通过扫描博客条目、新闻和其他项目中的某些核心关键字来帮助在我的站点内链接页面。然后,它会用指向相应页面的链接替换这些关键字。我遇到了一些不应该用链接替换的词的问题。例如,我的一些HTML表格中有一个摘要标记,其中包含表格内容的小摘要。因此,例如,我可能有一个如下所示的标签:...我的函数错误地将关键字或短语(如“汽车零件”)替换为链接。我如何构造我的替换正则表达式以在这种情况下不替换它,但如果它出现在一个段落中或者甚至在HTML表格的一个单元格中,请替换它。在此先感谢您的帮助和指导!编辑:澄清一下,我正在使用PHP呈现我的页面。在将内容作为HTML输出到页面之前,我使用
例如,我有以下代码:$string="adfggggeerevalueaaaabbb(10)valueddtttgggwww(20)valueddtttgggwwwdddd(40)";preg_match("/(value).*(\(\d+\))/is",$string,$result);var_dump($result[2]);//outputs40.我正在尝试获取第一个值(10)。上面的代码输出40是有道理的,但不是我想要的。字符串模式是:单词“值”,然后是任意字符的数字,然后是“(”、整数、“)”。似乎我遗漏了一些明显的东西......我没有太多地使用正则表达式,但我相信它可以通
有没有更好的方法来处理在PHP中(或一般情况下)运行多个正则表达式?我有下面的代码用破折号替换非字母数字字符,一旦替换发生,我想删除多个破折号的实例。$slug=preg_replace('/[^A-Za-z0-9]/i','-',$slug);$slug=preg_replace('/\-{2,}/i','-',$slug);有没有更简洁的方法来做到这一点?即,设置正则表达式模式以替换一个模式,然后替换另一个模式?(说到正则表达式,我就像一个插在socket里的child) 最佳答案 你可以通过说出你在第一个中的真正意思来消除第二
我想捕获路径中没有年份的最后一个文件夹。对于这个字符串路径,我只需要“MillersCrossing”而不是“Movies\MillersCrossing”,这是我当前的正则表达式捕获的内容。G:\Movies\MillersCrossing[1990]preg_match('/\\\\(.*)\[\d{4}\]$/i',$this->parentDirPath,$title); 最佳答案 basename[docs]怎么样?和substr[docs]而不是复杂的表达式?$title=substr(basename($this->p