Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php正则表达式有助于仅查找多个文件名而非完整URL_Php_Expression - Fatal编程技术网

php正则表达式有助于仅查找多个文件名而非完整URL

php正则表达式有助于仅查找多个文件名而非完整URL,php,expression,Php,Expression,我正在尝试修复一个在php中使用的正则表达式,它在一个句子/段落中查找所有文件名。文件名通常如下所示:/this-a-valid-page.php 从我在SOF上收到的帮助中,我的旧模式被修改为这个模式,这避免了完整URL,这是我遇到的问题,但是这个模式只在字符串的开头找到一个实例,而在字符串中没有任何内容 /^\/(.*?).php/ 我这里有一个活生生的例子:去掉^-克拉表示字符串/行的开头,这就是为什么它在其他地方不匹配 如果需要避免使用完整URL,可能需要将“^”更改为“:^ |\

我正在尝试修复一个在php中使用的正则表达式,它在一个句子/段落中查找所有文件名。文件名通常如下所示:/this-a-valid-page.php

从我在SOF上收到的帮助中,我的旧模式被修改为这个模式,这避免了完整URL,这是我遇到的问题,但是这个模式只在字符串的开头找到一个实例,而在字符串中没有任何内容

/^\/(.*?).php/ 
我这里有一个活生生的例子:

去掉^-克拉表示字符串/行的开头,这就是为什么它在其他地方不匹配

如果需要避免使用完整URL,可能需要将“^”更改为“:^ |\s”之类的内容,它将匹配字符串的开头或空格字符-请记住稍后从匹配的开头删除空格。

删除“^”-克拉表示字符串/行的开头,这就是为什么它在其他地方不匹配


如果需要避免使用完整URL,可能需要将“^”改为“:^ |\s”之类的字符,以匹配字符串的开头或空格字符-请记住稍后从匹配的开头删除空格。

若要查找所有匹配项,您必须删除开始锚定并使用preg_match_all函数而不是preg_match:


还有。是一个元字符。你必须以\的形式逃离它。要匹配文字句点。

要查找所有匹配项,必须删除起始锚点并使用preg_match_all函数而不是preg_match:


还有。是一个元字符。你必须以\的形式逃离它。匹配文字句点。

表达式中的最后一个点仍然可能导致问题,因为它将匹配任何字符。例如,您可以将/somefilenamephp与该模式匹配。将其反斜杠设置为文字句点:

/\/(.*?)\.php/

还注意到了吗?非贪婪是必要的,而Arda Xi的模式是行不通的将运行到字符串的末尾,然后一次备份一个字符,直到它能够匹配.php,这当然不是您想要的。

表达式中的最后一个点仍然可能导致问题,因为它将匹配任何一个字符。例如,您可以将/somefilenamephp与该模式匹配。将其反斜杠设置为文字句点:

/\/(.*?)\.php/

还注意到了吗?非贪婪是必要的,而Arda Xi的模式是行不通的将比赛到字符串的结尾,然后一次备份一个字符,直到它能够匹配.php,这当然不是您想要的。

另外:这是一个有效的文件名:/filename.php{some text after}有史以来最好的打字错误:在请求字符串时找到一个实例:-另外:这是一个有效的文件名:/filename.php{some text after}有史以来最好的打字错误:在求字符串时发现一个例子:-那个表达式就是我想弄明白的。。。我的注册技能很糟糕。谢谢,它正是我想要的$pattern=/?:^|\s\/.*php/的工作方式;那个表情正是我想弄明白的。。。我的注册技能很糟糕。谢谢,它正是我想要的$pattern=/?:^|\s\/.*php/的工作方式;你是对的,它确实忽略了空格并试图找到下一个