Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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_Wordpress_String_Str Replace - Fatal编程技术网

Php 字符串替换数值精确匹配

Php 字符串替换数值精确匹配,php,wordpress,string,str-replace,Php,Wordpress,String,Str Replace,我有字符串“”。我想用空白字符串替换“?page_num=1”。因为我只需要“”URL 我已尝试使用以下代码: str_replace('?page_num=1','',$str); 但是,如果他们的页码后面是13,那么我是因为替换而得到的。您可以使用来匹配数字,如下所示: $string = "http://www.test.com/abcd.html?page_num=12"; $res = preg_replace("/\?page_num=\d+/", "", $string); ec

我有字符串“”。我想用空白字符串替换“?page_num=1”。因为我只需要“”URL

我已尝试使用以下代码:

str_replace('?page_num=1','',$str);
但是,如果他们的页码后面是13,那么我是因为替换而得到的。

您可以使用来匹配数字,如下所示:

$string = "http://www.test.com/abcd.html?page_num=12";
$res = preg_replace("/\?page_num=\d+/", "", $string);
echo $res;

我认为您可能希望使用正则表达式而不是普通的str_replace()。str_replace()只能进行精确替换,而通过RegExp我们可以进行模式替换

为了实现您的目标,我建议使用以下方法:

$str = preg_replace('#\?page_num=\d+$#i', '', $str);

如果您想了解有关RegExp的更多信息,请尝试查看,我已经对您的代码进行了一些修改并获得了结果

首先,我找到了“?”的位置,并将字符串从中拆分为一个子字符串

<?php

   $str = "http://www.test.com/abcd.html?page_num=12";   
   $replaceString = substr($str, strpos($str, "?") );    
   $string = str_replace(replaceString, '', $str);
   echo $string;

?>

substr():函数返回字符串的一部分

strpos():查找一个字符串在另一个字符串中第一次出现的位置


您只需
explode

<?php
$url = 'http://www.test.com/abcd.html?page_num=1';
echo explode('?',$url)[0];
?>

演示:

我已经解决了这个问题

试试这个:

$str = preg_replace('/(?<!\.)\b\?page_num=1\b(?!\.)/', '', $str);

$str=preg_replace('/(?您可以通过子字符串获得它

$url= "http://www.test.com/abcd.html?page_num=1";
$newurl = substr($url, 0, strpos($url, "?"));

如果您有
http://www.test.com/abcd.html?page_num=1&other=121
?不,我没有传递任何其他参数。只是我有html和他们的is href,其中page_num=1我想删除,但只有1个其他page_num remove为什么你不直接在
href
中更改?你检查了吗?是的,我检查了,但我有很多分页用html墨水,我只想用实际链接替换第一页链接“1”。她说
我只想要”http://www.test.com/abcd.html“
如果url是
abcd.html?page_num=1&other=121
,您的答案将失败。如果是
page_num=
,则regex始终需要一个类似
page_num=12
的值