Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 - Fatal编程技术网

Php 替换和移除字符串的部分

Php 替换和移除字符串的部分,php,Php,我有一个由如下URL组成的字符串:http://www.foo.com/parentfoo/childfoo/我想把它变成http://www.foo.com/parentfoo#childfoo 删除最后两个“/”并将倒数第二个“/”替换为“#”的最佳方法是什么?首先,找到最后一个位置: $url = "http://www.foo.com/parentfoo/childfoo/"; $last = strrpos($url, '/'); if ($last === false) { r

我有一个由如下URL组成的字符串:
http://www.foo.com/parentfoo/childfoo/
我想把它变成
http://www.foo.com/parentfoo#childfoo


删除最后两个“/”并将倒数第二个“/”替换为“#”的最佳方法是什么?

首先,找到最后一个位置:

$url = "http://www.foo.com/parentfoo/childfoo/";
$last = strrpos($url, '/');
if ($last === false) {
   return false;
}
从那里,找到最后的第二个:

$next_to_last = strrpos($url, '/', $last - strlen($url) - 1);

$var1  = substr_replace($url,"",$last);
echo $var2  = substr_replace($var1, "#", $next_to_last, 1);   
//  http://www.foo.com/parentfoo#childfoo

首先,找到最后一个位置:

$url = "http://www.foo.com/parentfoo/childfoo/";
$last = strrpos($url, '/');
if ($last === false) {
   return false;
}
从那里,找到最后的第二个:

$next_to_last = strrpos($url, '/', $last - strlen($url) - 1);

$var1  = substr_replace($url,"",$last);
echo $var2  = substr_replace($var1, "#", $next_to_last, 1);   
//  http://www.foo.com/parentfoo#childfoo

首先,找到最后一个位置:

$url = "http://www.foo.com/parentfoo/childfoo/";
$last = strrpos($url, '/');
if ($last === false) {
   return false;
}
从那里,找到最后的第二个:

$next_to_last = strrpos($url, '/', $last - strlen($url) - 1);

$var1  = substr_replace($url,"",$last);
echo $var2  = substr_replace($var1, "#", $next_to_last, 1);   
//  http://www.foo.com/parentfoo#childfoo

首先,找到最后一个位置:

$url = "http://www.foo.com/parentfoo/childfoo/";
$last = strrpos($url, '/');
if ($last === false) {
   return false;
}
从那里,找到最后的第二个:

$next_to_last = strrpos($url, '/', $last - strlen($url) - 1);

$var1  = substr_replace($url,"",$last);
echo $var2  = substr_replace($var1, "#", $next_to_last, 1);   
//  http://www.foo.com/parentfoo#childfoo

下面是一个使用
regex
查找最后一个
/
的解决方案

<?php
$url =  'http://www.foo.com/parentfoo/childfoo/';
$output = preg_replace('!/([^/]+)/$!', "/#\\1", $url);
echo $output."\n";
?>

这里有一点关于它是如何工作的解释

  • 首先,我们使用
    定义正则表达式
    而不是通常的
    /
    ,因为我们试图匹配表达式中的
    /
    ,这为我们避免了逃避
    /
    带来的一定程度的困惑和头痛

  • 表达式
    /([^/]+)/$
    。我们正在匹配一个文本
    /
    ,后跟一些非零数量的非
    /
    字符,后跟另一个文本
    /
    ,后跟字符串的末尾
    $
    。通过将匹配项绑定到字符串的末尾,我们确保匹配的两个文本
    /
    恰好是输入中的最后一个和倒数第二个
    /

  • 分组括号
    ()
    捕获两个
    /
    之间的表达式,替换表达式
    \1
    在替换过程中将其替换回


  • 下面是一个使用
    regex
    查找最后一个
    /
    的解决方案

    <?php
    $url =  'http://www.foo.com/parentfoo/childfoo/';
    $output = preg_replace('!/([^/]+)/$!', "/#\\1", $url);
    echo $output."\n";
    ?>
    
    
    
    这里有一点关于它是如何工作的解释

  • 首先,我们使用
    定义正则表达式
    而不是通常的
    /
    ,因为我们试图匹配表达式中的
    /
    ,这为我们避免了逃避
    /
    带来的一定程度的困惑和头痛

  • 表达式
    /([^/]+)/$
    。我们正在匹配一个文本
    /
    ,后跟一些非零数量的非
    /
    字符,后跟另一个文本
    /
    ,后跟字符串的末尾
    $
    。通过将匹配项绑定到字符串的末尾,我们确保匹配的两个文本
    /
    恰好是输入中的最后一个和倒数第二个
    /

  • 分组括号
    ()
    捕获两个
    /
    之间的表达式,替换表达式
    \1
    在替换过程中将其替换回


  • 下面是一个使用
    regex
    查找最后一个
    /
    的解决方案

    <?php
    $url =  'http://www.foo.com/parentfoo/childfoo/';
    $output = preg_replace('!/([^/]+)/$!', "/#\\1", $url);
    echo $output."\n";
    ?>
    
    
    
    这里有一点关于它是如何工作的解释

  • 首先,我们使用
    定义正则表达式
    而不是通常的
    /
    ,因为我们试图匹配表达式中的
    /
    ,这为我们避免了逃避
    /
    带来的一定程度的困惑和头痛

  • 表达式
    /([^/]+)/$
    。我们正在匹配一个文本
    /
    ,后跟一些非零数量的非
    /
    字符,后跟另一个文本
    /
    ,后跟字符串的末尾
    $
    。通过将匹配项绑定到字符串的末尾,我们确保匹配的两个文本
    /
    恰好是输入中的最后一个和倒数第二个
    /

  • 分组括号
    ()
    捕获两个
    /
    之间的表达式,替换表达式
    \1
    在替换过程中将其替换回


  • 下面是一个使用
    regex
    查找最后一个
    /
    的解决方案

    <?php
    $url =  'http://www.foo.com/parentfoo/childfoo/';
    $output = preg_replace('!/([^/]+)/$!', "/#\\1", $url);
    echo $output."\n";
    ?>
    
    
    
    这里有一点关于它是如何工作的解释

  • 首先,我们使用
    定义正则表达式
    而不是通常的
    /
    ,因为我们试图匹配表达式中的
    /
    ,这为我们避免了逃避
    /
    带来的一定程度的困惑和头痛

  • 表达式
    /([^/]+)/$
    。我们正在匹配一个文本
    /
    ,后跟一些非零数量的非
    /
    字符,后跟另一个文本
    /
    ,后跟字符串的末尾
    $
    。通过将匹配项绑定到字符串的末尾,我们确保匹配的两个文本
    /
    恰好是输入中的最后一个和倒数第二个
    /

  • 分组括号
    ()
    捕获两个
    /
    之间的表达式,替换表达式
    \1
    在替换过程中将其替换回


  • 首先删除最后一个斜杠,然后用散列替换最后一个斜杠

    <?php
    $url = "http://www.foo.com/parentfoo/childfoo/";
    
    $url = substr($url, 0, -1);
    
    $add = "#";
    
    $new =  preg_replace("~\/(?!.*\/)~", $add, $url);
    
    echo $new;
    ?>
    

    首先删除最后一个斜杠,然后用散列替换最后一个斜杠

    <?php
    $url = "http://www.foo.com/parentfoo/childfoo/";
    
    $url = substr($url, 0, -1);
    
    $add = "#";
    
    $new =  preg_replace("~\/(?!.*\/)~", $add, $url);
    
    echo $new;
    ?>
    

    首先删除最后一个斜杠,然后用散列替换最后一个斜杠

    <?php
    $url = "http://www.foo.com/parentfoo/childfoo/";
    
    $url = substr($url, 0, -1);
    
    $add = "#";
    
    $new =  preg_replace("~\/(?!.*\/)~", $add, $url);
    
    echo $new;
    ?>
    

    首先删除最后一个斜杠,然后用散列替换最后一个斜杠

    <?php
    $url = "http://www.foo.com/parentfoo/childfoo/";
    
    $url = substr($url, 0, -1);
    
    $add = "#";
    
    $new =  preg_replace("~\/(?!.*\/)~", $add, $url);
    
    echo $new;
    ?>
    

    regex之地。。。我永远也不会明白它是如此美丽。谢谢你!regex之地。。。我永远也不会明白它是如此美丽。谢谢你!regex之地。。。我永远也不会明白它是如此美丽。谢谢你!regex之地。。。我永远也不会明白它是如此美丽。谢谢你!这太棒了!当我发布这篇文章时,我开始阅读SEO,我想我想保留第二个/to make/#,但无论如何,谢谢你。现在我想我更了解preg_replace了。没问题,只需更改--$add=“#”;--至--$add=“/#”;这太棒了!当我发布这篇文章时,我开始阅读SEO,我想我想保留第二个/to make/#,但无论如何,谢谢你。现在我想我是联合国