如何使用PHP和正则表达式在变量中查找字符串

如何使用PHP和正则表达式在变量中查找字符串,php,regex,Php,Regex,我试图找到这个词,并在旁边加上一个数字。他怎么能这样做?我尝试了下面的代码,但我不能。有人能帮我吗? 谢谢大家! $string = 'I220ABCD I220ABCDEF I220ABCDEFG' if (preg_match("/I220.*/", $string, $matches)) { echo $matches[0]; } 预期结果: I220ABCD9 I220ABCDEF10 I220ABCDEFG11使用以下方法代替: $str = 'I220AB FRRRR CD

我试图找到这个词,并在旁边加上一个数字。他怎么能这样做?我尝试了下面的代码,但我不能。有人能帮我吗? 谢谢大家!

$string = 'I220ABCD I220ABCDEF I220ABCDEFG'
if (preg_match("/I220.*/", $string, $matches)) {
    echo $matches[0];
}
预期结果: I220ABCD9 I220ABCDEF10 I220ABCDEFG11

使用以下方法代替:

$str = 'I220AB FRRRR CD I221ABCDEF I220AB DSFDSF CDEFG';
$repl= preg_replace_callback('~(I220[^\s]+)~', function($m) {
         static $i=9;
         return $m[1] . $i++;
       }, $str);

echo $repl\n"; // I220AB9 FRRRR CD I221ABCDEF I220AB10 DSFDSF CDEFG

你需要在正则表达式中使用catch块,例如,
“/I220([^]+)/”
,如果你想全部使用,你也需要使用。

我不知道你在末尾添加数字的要求是什么,所以我只是在循环过程中增加数字

$string = 'I220ABCD I220ABCDEF I220ABCDEFG';

$arrayStrings = explode(" ", $string);
$int = 9;
$newString = '';

foreach($arrayStrings as $stringItem)
{   
    if (preg_match("/I220.*/", $stringItem, $matches)) 
    {

        $stringItem = $stringItem.$int;
        $newString = $newString.$stringItem." ";
        $int++;
    }
}

echo $newString;
使用:


.

根据您的需要进行预替换:

    $string = 'I220ABCD I220ABCDEF I220ABCDEFG';


   class MyClass{

       private static $i = 9;

       private static function callback($matches){
           return $matches[0] . self::$i++;
       }

       public static function replaceString($string){
            return preg_replace_callback('/I220[^\s]+/',"self::callback",$string);  
       }
   }


   echo(MyClass::replaceString($string));


当然,您可以通过编辑类来初始化所需的方式

explode()对这个小作业来说还不够吗?添加数字的标准是什么?只需添加任意数字?谢谢您的帮助!谢谢但当我一个接一个地通过时?如果我的字符串是这样的话,我将如何获得代码I220$字符串='I220AB FRRRR CD I221ABCDEF I220AB DSFDSF CDEFG';我想要的输出:I220AB FRRRR CD和I220AB DSFDSF CDEFGYou问题的开头是:
我试图找到单词并在旁边添加一个数字。
在您想要的输出中,我没有看到任何数字被添加。谢谢!但是当我一个接一个地经过时?你可以把它放在一个循环中:
foreach($match作为$match匹配){print\r($match);}
谢谢你,我可以很好地适应我的系统!非常欢迎,不要忘了选择相应帖子旁边的复选标记,将问题标记为已回答,以便未来用户可以从您的问题中获益如果我的字符串是这样,我将如何获得代码I220$字符串='I220AB FRRRR CD I221ABCDEF I220AB DSFDSF CDEFG';我用一个解决方案来回答你的问题。如果我的字符串是这样,我该如何获得代码I220$字符串='I220AB FRRRR CD I221ABCDEF I220AB DSFDSF CDEFG'@user1997072所需的输出是什么?I220AB FRRRR CD和I220AB DSFDSFCDEFG@user1997072这就是输入,我说的是输出,你想添加一个数字,对吗?如果我的字符串是这样的话,我该如何获得代码I220$字符串='I220AB FRRRR CD I221ABCDEF I220AB DSFDSF CDEFG';我想要的输出:I220AB FRRRR CD和I220AB DSFDSF CDEFG
    $string = 'I220ABCD I220ABCDEF I220ABCDEFG';


   class MyClass{

       private static $i = 9;

       private static function callback($matches){
           return $matches[0] . self::$i++;
       }

       public static function replaceString($string){
            return preg_replace_callback('/I220[^\s]+/',"self::callback",$string);  
       }
   }


   echo(MyClass::replaceString($string));