如何删除子字符串到某个字符?

时间:2016-09-03 01:38:41

标签: php string replace preg-replace

我们有一个字符串,不断生成以下模式。理想情况下,我们想要删除字符串(所有字符)直到找到的第一个“/”。我尝试过以下但是没有用。需要帮助才能看到我缺少的东西。

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

示例字符串:

  1. 测试项目/测试TEST1 /测试-2 /测试
  2. 测试ITEM2 /测试
  3. ABDC /测试/检验/测试
  4. 我尝试过的示例代码(其中$ str是上面的示例字符串):

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

    当前输出:

    1. 测试
    2. 测试
    3. 测试
    4. 所需的字符串输出:

      1. 测试TEST1 /测试-2 /测试
      2. 测试
      3. 测试/检验/测试

5 个答案:

答案 0 :(得分:0)

试试这个:

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

对于您拥有的每条路径。

答案 1 :(得分:0)

你可以这样做:

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这适用于你给出的所有例子 - 祝你好运

<?php
$string = 'test-item/test-test1/test-2/test';
$character   = '/';
$position = strpos($string, $character);


    $string2 = substr($string, $position+1);    
    echo "New string is '$string2'";
?>

答案 4 :(得分:-1)

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