PHP删除字符串中的字符
我的php很弱,我正在尝试更改此字符串:PHP删除字符串中的字符,php,string,Php,String,我的php很弱,我正在尝试更改此字符串: http://www.example.com/backend.php?/c=crud&m=index&t=care ^ 将是: http://www.example.com/backend.php?c=crud&m=index&t=care ^ 在backend.php?之后删除/。
http://www.example.com/backend.php?/c=crud&m=index&t=care
^
将是:
http://www.example.com/backend.php?c=crud&m=index&t=care
^
在backend.php?
之后删除/
。有什么好办法吗
谢谢
$str = preg_replace('/\?\//', '?', $str);
编辑:参见CMS的答案。时间不早了,我应该知道得更清楚。虽然regexp在这里很合适,但我将为您提供另一种方法。它可能比等效的regexp快一点,但生活就是选择(…或其他东西)
$length=strlen($urlString);
对于($i=0;$i我认为最好简单使用,就像手册上说的:
如果你不需要花哨的更换
规则(如正则表达式),您可以
应始终使用此功能
而不是ereg_replace()或
preg_replace()
Er,如果$urlString[$i+1]不可用怎么办:问题没有出现这种情况,所以我的解决方案也没有考虑到。MDCore:请详细说明,为什么会这样?我遇到了一个有用的问题。如果您的字符串的大小为megs(可能会发生),运行preg_replace或str_replace将有可能达到php.ini的内存限制。php中的pcre_replace代码在执行任何操作之前都会将字符串大小缩小2倍,因此这可能是一个问题。根据我之前的评论,如果字符串非常大,可以使用strpos技巧来找到正确的片段,preg_匹配它们,然后使用ab用括号表示法删除不需要的字符。使用时要小心,因为它不快,但会节省内存。实际上,您应该将CMS的答案标记为正确答案。str_replace比regex快得多。@Pestilence,这就是我推荐CMS答案的原因。
$length = strlen($urlString);
for ($i=0; $i<$length; i++) {
if ($urlString[$i] === '?') {
$urlString[$i+1] = '';
break;
}
}
<?
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care";
$goodUrl = str_replace('?/', '?', $badUrl);
$splitPos = strpos($url, "?/");
if ($splitPos !== false) {
$url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2);
}