【问题标题】:How to remove substring up to a certain character?如何删除不超过某个字符的子字符串?
【发布时间】:2016-09-03 01:38:41
【问题描述】:

我们有一个字符串,它在下面不断生成以下模式。理想情况下,我们希望删除字符串(所有字符)直到找到的第一个“/”。我尝试了以下方法,但它不起作用。需要帮助来看看我缺少什么。

目标是从开头删除第一个“/”和“/”本身之前的所有字符。棘手的部分是第一个“/”之前的字符串长度可能不同。

示例字符串:

  1. test-item/test-test1/test-2/test
  2. test-item2/test
  3. abdc/test/test/test

我尝试过的示例代码(其中 $str 是上面的示例字符串):

$patt = '/.+\/';
$repl = '';
$str = preg_replace($patt, $repl, $str);

当前输出:

  1. 测试
  2. 测试
  3. 测试

所需的字符串输出:

  1. test-test1/test-2/test
  2. 测试
  3. 测试/测试/测试

【问题讨论】:

    标签: php string replace preg-replace


    【解决方案1】:

    下面是一个使用 substr() 和 strpos() 函数的方法:

     $str = substr($str, strpos($str, '/') + 1 );
    

    【讨论】:

    • 感谢您的帮助。这解决了问题,因为我能够删除我想要的字符串和字符。
    【解决方案2】:

    试试这个:

    $exp = explode("/", "test-item/test-test1/test-2/test");
    $result = implode(array_shift($exp), "/");
    

    对于您拥有的每条路径。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      $str = preg_replace('^.*?\/(.*)\/.*$', '$1', $str);
      

      【讨论】:

        【解决方案4】:

        这适用于您提供的所有示例-祝您好运

        <?php
        $string = 'test-item/test-test1/test-2/test';
        $character   = '/';
        $position = strpos($string, $character);
        
        
            $string2 = substr($string, $position+1);    
            echo "New string is '$string2'";
        ?>
        

        【讨论】:

        • 如果这些答案中的任何一个有效,也许你可以接受一个或评价答案谢谢
        【解决方案5】:

        我同意@DragonSpirit: $str = substr($str, strpos($str, '/') + 1 );应该工作!

        【讨论】:

        • OP 没有询问或标记为 javascript 或任何语言,可能是 java。
        猜你喜欢
        • 2011-05-28
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        相关资源
        最近更新 更多