Php 在字符串中查找单词,并递增后面的整数

Php 在字符串中查找单词,并递增后面的整数,php,regex,system,contact,Php,Regex,System,Contact,这是我的联系方式 邮件的主题可以是:Hello Friend.和RE^2 Hello Friend 我需要代码来查找主题是否有RE^{int}{subject},如果它有,则将其设置为RE^{++int}{subject} <?php preg_match('/^RE\^(\d)*$/', $mail->subject , $m); if (empty ($m)) { $newSubject = 'RE^2 '.$mail->subject;

这是我的联系方式

邮件的主题可以是:
Hello Friend.
RE^2 Hello Friend

我需要代码来查找主题是否有
RE^{int}{subject}
,如果它有,则将其设置为
RE^{++int}{subject}

<?php
    preg_match('/^RE\^(\d)*$/', $mail->subject , $m);

    if (empty ($m)) {
        $newSubject = 'RE^2 '.$mail->subject;
    } else {
        $reNum = $m[1]+1;
        // How to edit the subject to 'RE^{++num} {$mail->subject}' ?
    }
?>
如果不是:则将其设置为
RE^2{subject}

<?php
    preg_match('/^RE\^(\d)*$/', $mail->subject , $m);

    if (empty ($m)) {
        $newSubject = 'RE^2 '.$mail->subject;
    } else {
        $reNum = $m[1]+1;
        // How to edit the subject to 'RE^{++num} {$mail->subject}' ?
    }
?>

您可以使用带有preg\u 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;

您可以使用带有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;

此解决方案使用
preg\u replace\u回调
,以便您可以使用函数来处理替换

$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'

此解决方案使用
preg\u replace\u回调
,以便您可以使用函数来处理替换

$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'


请展示您迄今为止尝试过的尝试。请展示您迄今为止尝试过的尝试。哦,谢谢。最后一个问题,如何将
Hello Friend
更改为主题字符串$newSubject=“RE^$number你好朋友”@user3025333,你说的:将Hello Friend更改为主题字符串是什么意思?@user3025333,检查我的编辑:)@user3025333,如果有帮助,别忘了接受:)太好了!谢谢只有一件事。RE^9没问题,但RE^10呢?两位数?谢谢你,伙计…哦,谢谢你。最后一个问题,如何将
Hello Friend
更改为主题字符串$newSubject=“RE^$number你好朋友”@user3025333,你说的:将Hello Friend更改为主题字符串是什么意思?@user3025333,检查我的编辑:)@user3025333,如果有帮助,别忘了接受:)太好了!谢谢只有一件事。RE^9没问题,但RE^10呢?两位数?谢谢你,伙计…它可以打到+++…@user3025333,这不是你要的吗?Lol如果他的主题是,
Hi5-Friend
它将成为
Hi6-Friend
这不是他想要的,但我喜欢你的方式:)@user3025333查看我的更新答案。它只会增加“RE^”后面的数字,如果主题缺少,它会给主题添加“RE^2”。它会将任何数字添加到++…@user3025333,这不是你要求的吗?Lol如果他的主题是,
Hi5-Friend
它将成为
Hi6-Friend
这不是他想要的,但我喜欢你的方式:)@user3025333查看我的更新答案。它只会增加“RE^”后面的数字,如果缺少,则会向主题添加“RE^2”。