Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-在字符串中搜索字符串并替换该字符串_Php_Regex - Fatal编程技术网

php-在字符串中搜索字符串并替换该字符串

php-在字符串中搜索字符串并替换该字符串,php,regex,Php,Regex,我在问一个问题,这个问题可以通过谷歌搜索来回答,但我没有发现任何可以做到这一点的东西,所以我在这里问。请不要否决并关闭它,它也可能对其他人有用: 我的问题是:我需要寻找字符串的某个部分,找到它并替换它。但我的问题是字符串的这部分每次都在变化,所以我需要注入一些regexp $url = "www.google.com/test=2"; replace the 'test=2' with 'test=1' $result = "www.google.com/test=1" 问题是:slug可以有

我在问一个问题,这个问题可以通过谷歌搜索来回答,但我没有发现任何可以做到这一点的东西,所以我在这里问。请不要否决并关闭它,它也可能对其他人有用:

我的问题是:我需要寻找字符串的某个部分,找到它并替换它。但我的问题是字符串的这部分每次都在变化,所以我需要注入一些regexp

$url = "www.google.com/test=2";
replace the 'test=2' with 'test=1'
$result = "www.google.com/test=1"

问题是:slug可以有1-20之间的任意数字:
test=\d{1,20}
就是这样。我尝试了
preg\u replace
substr\u replace
,但他们都做不到

我看不出下面的
/test=\d+/
有什么问题?我认为您的问题在于您忘记了修饰符(在您的示例中:,但您必须使用这样的修饰符:)

基本含义(0-9之间的数字或数字1后跟0-9或数字20之间的任何数字)

它也可以缩短为

/test=(1?\d|20)/

意思是(1重复1或0次,后跟0-9或数字20)

我看不出下面的
/test=\d+/
有什么问题?我认为您的问题在于您忘记了修饰符(在您的示例中:,但您必须使用这样的修饰符:)

基本含义(0-9之间的数字或数字1后跟0-9或数字20之间的任何数字)

它也可以缩短为

/test=(1?\d|20)/

意思是(1重复1或0次,后跟0-9的数字或数字20)

同样,{1,20}不会匹配1和20之间的数字,但是0和99999999999999999999,这不是我认为你想要的。

而且,{1,20}也不会匹配1和20之间的数字,但是0和99999999999999,我想这并不是你想要的

$url = "www.google.com/test=2";
$replacement = 1;
echo preg_replace('/(.*test)=([1-20])/', "$1=1" ,$url);
如果我理解正确的话,这应该可以

$url = "website.com/test=1/asdasd/....";
$check= "test=1";
$newval = "test=2"

if(strstr($url,$check))
  $result = preg_replace($check, $newval, $url);
如果我理解正确的话,这应该可以

$url = "website.com/test=1/asdasd/....";
$check= "test=1";
$newval = "test=2"

if(strstr($url,$check))
  $result = preg_replace($check, $newval, $url);
如果该值包含在字符串中,则可以替换它


如果值包含在字符串中,然后它可以被替换。

告诉我们您尝试的确切代码这里是我尝试的问题您面临的问题是您在preg\u replace call中漏掉了您的分隔符您用这个正则表达式匹配0-20之间的数字:告诉我们您尝试的确切代码这里是我尝试的问题您面临的问题是您在preg\u replace中漏掉了您的分隔符callYou用这个正则表达式匹配0-20之间的数字:那么它将匹配什么?我不是regexpguru@doniyor它将匹配任何重复1-20次的数字字符(0-9)。哦,坏选项:)。谢谢你的指导!那么\d+是这里最好的吗?@doniyor检查我的更新回复,了解如何只匹配0-20。这比你想象的要复杂一些
\d+
表示“任何数字(
\d
)重复1次或多次(
+
),因此它可能无限大。那么它将匹配什么?我不是regexpguru@doniyor它将匹配任何数字字符(0-9)重复1-20次。哦,糟糕的选择:)。谢谢你的指导!那么\d+是这里最好的一个吗?@doniyor检查我关于如何只匹配0-20的更新响应。这比你想象的要复杂一些。
\d+
意味着“任何数字(
\d
)重复1次或多次(
+
),因此它可能无限大。