这是我的联系人系统。
邮件主题可以是:Hello Friend.
和RE^2 Hello Friend
。
我需要使用代码查找主题是否有RE^{int} {subject}
,如果有的话,请{.1}}。
如果不是:而不是RE^{++int} {subject}
。
RE^2 {subject}
答案 0 :(得分:4)
您可以将REGEX与preg_match一起使用,以查找如下编号:
$str = "RE^3 Hello Friend";
preg_match( '/RE\^(\d*)/', $str , $m);
print_r( $m );
$number = $m[ 1 ]
最终结果可能是:
$subject = "Hello Friend";
preg_match( '/RE\^(\d*)/', $subject , $m);
if ( empty ( $m ) )
$newSubject = "RE^2 Hello Friend";
else{
$number = $m[ 1 ] + 1;
$newSubject = "RE^$number Hello Friend";
}
echo $newSubject;
在此处回答您的评论是更改后的代码:
$subject = "Hello AbuRomaissae";
if ( !preg_match( '/RE\^(\d*)/', $subject , $m) )
$newSubject = "RE^2 $subject";
else{
$number = $m[ 1 ] + 1;
$newSubject = "RE^$number ".preg_replace( '/RE\^(\d*) /', "", $subject);
}
echo $newSubject;
答案 1 :(得分:0)
此解决方案使用preg_replace_callback
,以便您可以使用函数来处理替换。
$subject = 'Hello Friend';
$subject = 'RE^2 Hello Friend';
$subject = preg_replace_callback('/RE\^(\d*)/', 'myFunc', $subject);
function myFunc($matches) {
$x = ++$matches[0];
return $x;
}
if (!preg_match('/RE\^\d*/', $subject)) { //if "RE^\d" is missing, add "RE^2"
$subject = "RE^2 {$subject}";
}
echo $subject; //'RE^3 Hello Friend'