草庐IT

php - 使用正则表达式匹配 Laravel 路由中的子字符串

我的网址是:www.foo.com/some-bar-slug-here/page如果在上面显示的slug中找到字符串“bar”,我无法获得捕获路径:Route::any('{myslug}/page/',array('as'=>'bar-page','uses'=>'Controllers\MyBar@index'))->where('myslug','/bar/');如果我使用正则表达式[0-9A-Za-z\-]+它有效,但它不适用于/bar/。有什么想法吗? 最佳答案 我使用^([0-9A-Za-z\-]+)?bar([0-9

php - 编写一个简单的语法分析器

这是我想做的-在Php中:给定一个字符串,得到如下结果:(a()?b|c)a是一个返回true或false的函数。这应该在调用a()后给出b或c(a()?(b()?d|e)|c)。同理。最后的结果应该是d,e或者c(a()?(b()?d|e)|(c()?f|g))。同理。最终结果应该是d,e,forg我面临的问题是a(在我之前的示例中)也可以是表达式,如下所示:((h()?a|i)?(b()?d|e)|(c()?f|g))我正在尝试使用正则表达式来执行此操作,但这不起作用。$res=preg_match_all('/\([^.\(]+\)/',$str,$matches);所以最后我想

php - preg_match 在第二个斜杠后向后看

这是我的字符串:stringa/stringb/123456789,abc,cde在preg_match之后:preg_match('/(?输出是:stringb/123456789如何更改我的preg_match以在第二个斜线(或最后一个斜线之后)后提取字符串?期望的输出:123456789 最佳答案 您可以将/以外的任何内容匹配为/(?[^\/,]*否定字符类匹配除,或\以外的任何字符RegexDemo示例preg_match('/(?123456789 关于php-preg_mat

PHP难的preg_match

我正在尝试管理我用于XBMC的个人Web服务器上的一些文件,但所有文件(来自YIFY的电影)的名称如下Jumanji.1995-720p.YIFY.mp4Silver.Linings.Playbook.2012.1080p.x264.YIFY.mp4AmericanHustle(2013)1080pBrRipx264-YIFY.mp4请注意,有些项目用.分隔,而其他项目则用_或空格分隔。所以我需要做的是将文件preg_match到一个数组(title,year,quality)我只知道一些preg_match基础知识。但这对我来说太难了。例如echoextract('AmericanH

PHP preg_match 特定字段值

我想获取不断更改其值的字段的ID或名称。例子:我的表单中有这些字段:我想获取第一个字段的ID或名称,但它一直在变化,例如:模式是始终是5个数值。我已经试过了,但没有成功:preg_match('/(\d)id=\s*([0-9]{5})\s*(\d+)/',$html,$fieldId); 最佳答案 试试这个:preg_match('/\bid\s*=\s*"(\d{5})"/',$html,$fieldId);单词边界的转义序列是\b,而不是\d。没有理由在\b周围使用捕获组,因为它是零长度匹配。您没有匹配ID周围的双引号。您可以

php - 从短语中删除单词,单词之间只留一个空格

我有以下短语,我需要在PHP中删除英文字符$field="日本語フレーズAJapanesephraseAJapanesephrase日本語フレーズ";我有以下正则表达式trim(preg_replace('/[a-zA-Z]/','',$field));但这将留下不止一个空格。日本語フレーズ日本語フレーズ我需要它们之间只有一个空格。以下是预期的输出。日本語フレーズ日本語フレーズ 最佳答案 [a-zA-Z]+你可以试试这个。替换为。看demo。https://regex101.com/r/cK4iV0/16$re="/[a-zA-Z]

PHP:如何用破折号和括号之间的所有内容拆分字符串。 (preg_split 或 preg_match)

几天来我一直在思考这个问题,但似乎没有得到想要的结果。例子:$var="SomeWords-OtherWords(MoreWords)Dash-Binded-Word";期望的结果:array([0]=>SomeWords[1]=>OtherWords[2]=>MoreWords[3]=>Dash-Bound-Word)我能够使用preg_match_all使这一切正常工作,但随后“Dash-Bound-Word”也被分解了。尝试将它与周围的空格匹配是行不通的,因为它会破坏除破折号之外的所有单词。我使用的preg_match_all语句(它也分解了破折号绑定(bind)的词)是这样的:

php 将 preg_replace 转换为 preg_replace_callback

我正在处理这段旧代码,遇到了这个-但失败了:preg_replace('!s:(\d+):"(.*?)";!e',"'s:'.strlen('$2').':\"$2\";'",$sObject);它告诉我preg_replacee修饰符已弃用,改为使用preg_replace_callback。据我所知,我应该用回调函数替换's:'.strlen('$2').':\"$2\";'部分替补上场。我不太明白的是我将要替换的正则表达式的作用。获取填充在数据库字段中的php序列化数据(愚蠢,我知道......),长度字段损坏并修复它们以重新插入是有点的一部分。那么谁能解释一下那个位在做什么,或

PHP - 试图只在引号内获取文本

我正在尝试使用PHP脚本创建一个Slack斜杠命令。所以当我输入时:/savesomeurl.com"Thisisthecaption"我可以将一个字符串转换成两个不同的变量。长字符串将作为:https://someurl.com"Thisisthecaption"我希望能够把它变成:$url=https://someurl.com;$caption=Thisisthecaption;我已经尝试了之前在StackOverflow上搜索的一些正则表达式模式,但可以使任何东西正常工作。非常感谢任何帮助! 最佳答案 如果你知道它将采用那种

php - 正则表达式,其中数字可以连续以 9 但不能以 999 开头

我正在尝试制作一个正则表达式,其中:数字可以从3、5、6或9开始号码不能以999开头。例如,93214211被匹配,但是99912345不应该被匹配。这是我现在所拥有的,它满足了第一个要求:^3|^5|^6|^9|[^...]}我有一段时间被第二个要求困住了。谢谢! 最佳答案 你可以使用negativelookahead这样的^(?!999)[3569]\d{7}$RegexDemo正则表达式分解^#Startofstring(?!999)#Negativelookahead.Assertsthatitsimpossibletoma