php-用另一个字符串的一部分替换字符串的一部分
我一直在四处寻找这个,但这是我找不到的 我想替换以下字符串的粗体部分: /虚拟/公共/管理/内容/编辑/2 如果它与以下字符串的任何部分匹配: 您可以看到/pano\u virtual/public/部分匹配,如果匹配,我想将其从第一个字符串中删除 我不能使用simle str_替换,因为两个字符串都会随着不同的服务器和不同的网站而改变,但第一个字符串的第一部分始终与第二个字符串的最后一部分匹配 可能吗 非常感谢 编辑-已解决!: 我设法找到了答案,但这不是最好的解决方案,但它确实有效:php-用另一个字符串的一部分替换字符串的一部分,php,string,str-replace,Php,String,Str Replace,我一直在四处寻找这个,但这是我找不到的 我想替换以下字符串的粗体部分: /虚拟/公共/管理/内容/编辑/2 如果它与以下字符串的任何部分匹配: 您可以看到/pano\u virtual/public/部分匹配,如果匹配,我想将其从第一个字符串中删除 我不能使用simle str_替换,因为两个字符串都会随着不同的服务器和不同的网站而改变,但第一个字符串的第一部分始终与第二个字符串的最后一部分匹配 可能吗 非常感谢 编辑-已解决!: 我设法找到了答案,但这不是最好的解决方案,但它确实有效: //
// $_SERVER['REQUEST_URI'] is the first string
// URL_ROOT is the second string
$url_root_substring = '';
$root_count = strlen(URL_ROOT);
$start = 0;
while($start < $root_count) {
$substring = substr(URL_ROOT.'/',$start,$root_count);
if($substring == substr($_SERVER['REQUEST_URI'],0,strlen($substring))) {
$url_root_substring = $substring;
break;
}
$start++;
}
/$\u服务器['REQUEST\u URI']是第一个字符串
//URL\u ROOT是第二个字符串
$url_root_substring='';
$root\u count=strlen(URL\u root);
$start=0;
而($start<$root\u count){
$substring=substr(URL_ROOT.'/',$start,$ROOT_count);
如果($substring==substr($\u服务器['REQUEST\u URI'],0,strlen($substring))){
$url\u root\u substring=$substring;
打破
}
$start++;
}
在我看来,您似乎在尝试匹配路径,而不是字符串。我猜你不会想要http://host/foobar
匹配barcamp/任何内容
因此,我建议在“/”上拆分字符串。然后,只需在“http”数组上迭代,从“path”数组中查找第一个元素。如果找到匹配项,则前进到第二个元素,以此类推。如果两个元素不匹配,则重置为“path”数组的开头。如果到达“http”数组的末尾,并且最后一个元素匹配,那么就有了最长的公共路径(如果没有,那么就没有任何公共路径)
输出:
answer: /admin/content/edit/2
“我想替换以下字符串的粗体部分…”什么粗体部分?请适当设置问题的格式。如果有多种匹配方法,是否希望最长的匹配?例如
/a/b/a/c
至http://localhost/a/b/a/
可以变成http://localhost/a/b/a/b/a/c
或http://localhost/a/b/a/c
。那么您想删除第一个字符串的最长前缀,同时也是第二个字符串的后缀吗?很抱歉,问题的格式不正确。是的,乔恩,这正是我所需要的-我该怎么做呢?那么。。。
answer: /admin/content/edit/2