【问题标题】:Find word in string, and increment the integer that comes after [closed]在字符串中查找单词,并增加[关闭]之后的整数
【发布时间】:2013-11-27 20:47:29
【问题描述】:

这是用于我的联系系统的。

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

我需要代码来查找主题是否有RE^{int} {subject},如果有则将其设为RE^{++int} {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}' ?
    }
?>

【问题讨论】:

  • 请显示您迄今为止尝试过的尝试。

标签: php regex system contact


【解决方案1】:

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

【讨论】:

  • 哦,谢谢。最后一个问题,如何将Hello Friend 更改为主题字符串? $newSubject = "RE^$number 你好朋友";
  • @user3025333,你的意思是:把Hello Friend改成主题字符串?
  • @user3025333,检查我的编辑:)
  • @user3025333,如果有帮助,别忘了接受 :)
  • 太棒了!谢谢!只有一件事。 RE^9 没问题,但是 RE^10 呢? 2位数?谢谢大佬...
【解决方案2】:

此解决方案使用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'

【讨论】:

  • 它会将任何数字变为 ++...
  • @user3025333 这不是您要求的吗?大声笑
  • 如果他的主题是 Hi5 Friend 它将变成 Hi6 Friend 这不是他想要的,但我喜欢你的方式:)
  • @user3025333 查看我的更新答案。它只会增加“RE^”后面的数字,如果缺少,它将添加“RE^2”到主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多