如何使用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));