我有这个:
$pattern = 'dev/25{LASTNUMBER}/P/{YYYY}'
$var = 'dev/251/P/2014'
在这种情况下{LASTNUMBER} = 1如何从$ var
获取此信息模式中的变量可以更多地始终在{}
中模式可以通过不同的例子:
$pattern = '{LASTNUMBER}/aa/bb/P/{OtherVar}'
在这种情况下,var将为1 / aa / bb / p / some并希望得到1
我需要获得{LASTNUMBER}模式并有结果
好吧也许是不可能的:)或者非常非常努力
答案 0 :(得分:3)
使用正则表达式..
if (preg_match('~dev/25([0-9])/P/[0-9]{4}~', $var, $m)) {
$lastnum = $m[1];
}
答案 1 :(得分:1)
$parts = explode("/", $pattern);
if (isset($parts[1])) {
return substr($parts[1], -1);
}
将比正则表达更快:)
答案 2 :(得分:0)
你可能需要这个:
<?php
$pattern = 'dev/251/P/2014';
preg_match_all('%dev/25(.*?)/P/[\d]{4}%sim', $pattern, $match, PREG_PATTERN_ORDER);
$match = $match[1][0];
echo $match; // echo's 1
?>
检查online
如果您需要循环结果,可以使用:
<?php
$pattern = <<< EOF
dev/251/P/2014
dev/252/P/2014
dev/253/P/2014
dev/254/P/2014
dev/255/P/2014
EOF;
preg_match_all('%dev/25(.*?)/P/[\d]{4}%sim', $pattern , $match, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($match[1]); $i++) {
echo $match[1][$i]; //echo's 12345
}
?>
签入online