实现以下目标的最佳方法是什么:
我有一个$img包含例如myimage_left.jgp,someimage_center.jpg或的变量img_right.jpg
测试的最佳方法是什么_left,_right或_center文件名和提取此值并将其存储在变量中的最佳方法是什么?
所以我$img已经包含了该文件的完整基本名称.我需要有$pos哪些应该持有_center或_left或_right.
这样做的方法是什么?preg_match,strpos等?
Jon*_*Jon 12
正则表达式最简单:
$input = 'foo_left.jpg';
if(!preg_match('/_(left|right|center)/', $input, $matches)) {
// no match
}
$pos = $matches[0]; // "_left", "_right" or "_center"
Run Code Online (Sandbox Code Playgroud)
更新:
对于更具防御意识的方法(如果"_left"文件名中可能有多个实例和朋友),您可以考虑添加到正则表达式.
仅当l/r/c后跟一个点时才会匹配:
preg_match('/(_(left|right|center))\./', $input, $matches);
Run Code Online (Sandbox Code Playgroud)
仅当l/r/c后跟文件名中的最后一个点时才会匹配(这实际上意味着基本名称以l/r/c规范结束):
preg_match('/(_(left|right|center))\\.[^\\.]*$/', $input, $matches);
Run Code Online (Sandbox Code Playgroud)
等等.
如果使用这些正则表达式,您将找到结果$matches[1]而不是$matches[0].