Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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正则表达式_Php_Regex - Fatal编程技术网

PHP正则表达式

PHP正则表达式,php,regex,Php,Regex,我有一个数组 $array = ['download.png', 'download-1.png', 'download-2.png'] 我想要一个能匹配所有三个元素的正则表达式。到目前为止,我已经试过了 /('."$filename".')\-*[0-9]*$/ 其中$filename='download.png' 如果它有帮助的话,我正在尝试在这个例子中使用正则表达式 foreach($len as $value){ if(preg

我有一个数组

$array = ['download.png', 'download-1.png', 'download-2.png']
我想要一个能匹配所有三个元素的正则表达式。到目前为止,我已经试过了

/('."$filename".')\-*[0-9]*$/
其中$filename='download.png'

如果它有帮助的话,我正在尝试在这个例子中使用正则表达式

foreach($len as $value){        
                    if(preg_match('/('."$filename".')\-*[0-9]*$/', $value->getValue()) ){ 
                    $array[] = $value->getValue();
                    var_dump( $array); echo '<br>';
                    }
                } 
foreach($len作为$value){
如果(preg_match('/('.“$filename.”)\-*[0-9]*$/',$value->getValue()){
$array[]=$value->getValue();
变量转储($array);回显“
”; } }
帮助我任何人提前谢谢

试试看

explode($filename,”)[0]
$filename
拆分为
['download','png']
,然后获取该数组中的第一个元素
download

(?:-\d)?
是可选的(是
使其成为可选的)非捕获组(即
(?:
)匹配破折号和数字。这意味着匹配
-1
是可选的


根据我对你问题的理解,
$value->getValue()
类似于
download-2.png
。你的正则表达式与
.png
扩展名不匹配。为此,我在我的正则表达式中添加了
\.png

没有正则表达式的替代解决方案。
如果数组中有两个项,则在“-”上分解,该数组的名称中包含“-”

$array = ['download.png', 'download-1.png', 'download-2.png'];

Foreach($array as $val){
    $exp = explode("-", $val);
    If(isset($exp[1])){ 
        Echo "name is: " . $exp[0] . "-" . $exp[1] . "\n";
    }Else{
        Echo "name is: " . $exp[0] ."\n";
    }
 }

是否
filename
始终=下载?
$filename
包含文件扩展名。@如果我的回答对您有帮助,请不要忘记标记为已接受:)