【发布时间】:2016-02-05 02:39:54
【问题描述】:
我正在创建一个与 Windows 文件系统文件路径匹配的正则表达式:
c:\WINDOWS\SYSTEM32\cmd\a.php //valid match
c:\WINDOWS\SYSTEM32\cmd\a //invalid match
使用此模式和代码:
function validate_filepath()
{
$view_path = 'c:\WINDOWS\SYSTEM32\cmd\a.php';
// ^(?:[\w]\:) # matching drive
//(?:\\[^\\:*?"<>|\r\n]+)+\\ # matching folder
// [^\\:*?"<>|\r\n]+\.(?:php) # matching file and php extension
$regex = '/^(?:[\w]\:)(?:\\[^\\:*?"<>|\r\n]+)+\\[^\\:*?"<>|\r\n]+\.(?:php)/mi';
preg_match($regex, $view_path, $matches);
return($matches[0]);
}
我已经使用https://regex101.com 尝试了该模式,它与路径匹配,但在使用 PHP 的 preg_match 时却不匹配。我在哪里做错了?
我还没有真正了解 PHP 如何处理字符串,但我在 regexonline 中使用双反斜杠和正确模式进行了测试,但 php 仍然返回 null $matches
编辑: 我正在使用 php-5.6.17
【问题讨论】:
-
提示:查看
x正则表达式修饰符以进行内联评论