字符串替换数值完全匹配

时间:2017-12-26 07:52:52

标签: php wordpress string str-replace

我有字符串“http://www.test.com/abcd.html?page_num=1”。我想用空字符串替换“?page_num = 1”。因为我只想要“http://www.test.com/abcd.html”网址。

我尝试使用以下代码:

str_replace('?page_num=1','',$str);

但如果他们在page_num之后是13,那么我因为替换而得到http://www.test.com/abcd.html3

6 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您只需explode

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

演示:https://eval.in/925182

答案 2 :(得分:0)

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

为了实现目标,我建议改用:

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

如果您想了解有关RegExp的更多信息,请尝试this resource

答案 3 :(得分:0)

看一下,我已经对你的代码做了一些修改并实现了结果

首先,我找到了'?'的位置并将字符串分解为子字符串

<?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():在另一个字符串

中查找第一次出现的字符串的位置

答案 4 :(得分:0)

我已经解决了问题

试试这个:

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

答案 5 :(得分:0)

您可以通过subString

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