如何解决或添加正则表达式?
case substr($rrr['url'],-4)=='.jpg' || '.png' || '.gif' || '.tif' || '.tiff':
答案 0 :(得分:5)
这样的东西?
case in_array(substr($rrr['url'],-4), array('.jpg','.png','.gif','.tif')):
case in_array(substr($rrr['url'],-5), array('.tiff')):
请注意,我在break;
- 表达式之间省略了case
。
也很酷:
case in_array(pathinfo($rrr['url'], PATHINFO_EXTENSION), array('jpg','png','gif','tif', 'tiff')):
问题的片段不起作用,因为它被评估为(缩短的)
(substr($rrr['url'],-4)=='.jpg') || '.png'
这是有效的,但显然它没有多大意义,很可能不是,预期的。
更新:此解决方案看起来更清晰。它假定,$rrr['url']
是唯一有趣的。见评论
switch (pathinfo($rrr['url'], PATHINFO_EXTENSION)):
case 'jpg':
case 'png':
case 'gif':
case 'tif':
case 'tiff':
do_something();
break;
}
答案 1 :(得分:4)
$foo == A || B || C
不起作用,必须为$foo == A || $foo == B || $foo == C
或in_array($foo, array(A, B, C))
。 case
语句中不能包含复杂的switch
。每个案例只能有一个值,比较值将与之比较。你必须把它写成单独的直通case
:
switch ($foo) {
case A :
case B :
case C :
bar();
break;
}
答案 2 :(得分:0)
您无法使用A == B || C || D
语句,只能使用A == B || A == C || A == D
此外,网址可以包含GET参数。
答案 3 :(得分:0)