我有字符串“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。
你可以使用preg_replace()匹配数字,如下所示:
$string = "http://www.test.com/abcd.html?page_num=12";
$res = preg_replace("/\?page_num=\d+/", "", $string);
echo $res;
你可以通过explode
来做到这一点
<?php
$url = 'http://www.test.com/abcd.html?page_num=1';
echo explode('?',$url)[0];
?>
但是:ぁzxswい
我想你可能想使用正则表达式而不是普通的str_replace()。 str_replace()只会进行精确替换,而通过RegExp我们可以进行模式替换。
为了实现你的目标,我建议改用:
https://eval.in/925182
如果您想了解有关RegExp的更多信息,请尝试$str = preg_replace('#\?page_num=\d+$#i', '', $str);
看一下,我已经对您的代码进行了一些修改并实现了结果
首先,我找到了'?'的位置并将字符串从子串中断开
this resource
substr():Function返回字符串的一部分
strpos():在另一个字符串中查找第一次出现的字符串的位置
我已经解决了问题
试试这个:
<?php
$str = "http://www.test.com/abcd.html?page_num=12";
$replaceString = substr($str, strpos($str, "?") );
$string = str_replace(replaceString, '', $str);
echo $string;
?>
你可以通过subString得到它
$str = preg_replace('/(?<!\.)\b\?page_num=1\b(?!\.)/', '', $str);