PHP - Return everything after delimiter

后端 未结 7 1619
北恋
北恋 2021-01-19 01:00

There are similar questions in SO, but I couldn\'t find any exactly like this. I need to remove everything up to (and including) a particular delimiter. For example, given t

相关标签:
7条回答
  • 2021-01-19 01:20

    Sample String:

    $string = 'value:90|custom:hey I am custom message|subtitute:array';
    

    convert string to array

    $var = explode('|', $string);
    

    Check Results:

    Array(
    [0] => value:90
    [1] => custom:hey I am custom message
    [2] => subtitute:array)
    

    Declare an array variable

    $pipe = array();
    

    Loop through string array $var

    foreach( $var as $key => $value ) {
      // get position of colon
      $position = strrpos( $value, ':' );
      // get the key
      $key = substr( $value, 0, $position );
      //get the value
      $value = substr( $value, $position + 1 );
      $pipe[$key] = $value; }
    

    Final Result:

    Array(
    [value] => 90
    [custom] => hey I am custom message
    [subtitute] => array)
    
    0 讨论(0)
  • 2021-01-19 01:21

    Use this preg_replace call:

    $str = 'File:MyFile.jpg';
    $repl = preg_replace('/^[^:]*:/', '', $str); // MyFile.jpg
    

    OR else avoid regex and use explode like this:

    $repl = explode(':', $str)[1]; // MyFile.jpg
    

    EDIT: Use this way to avoid regex (if there can be more than one : in string):

    $arr = explode(':', 'File:MyFile.jpg:foo:bar');
    unset($arr[0]);
    $repl = implode(':', $arr); // MyFile.jpg:foo:bar
    
    0 讨论(0)
  • 2021-01-19 01:21

    Shorter codes:

    To return everything BEFORE the FIRST occurence of a character, use strtok. Example:

    • strtok(16#/en/go, '#') will return 16

    To return everything AFTER the FIRST occurence of a character, use strstr. Example:

    • strstr(16#/en/go, '#') will return #/en/go (Includes search character '#')
    • substr(strstr(16#/en/go, '#'), 1) will return /en/go

    To return everything AFTER the LAST occurrence of a character, use strrchr. Example:

    • strrchr(16#/en/go, '/') will return /go (Includes search character '/')
    • substr(strrchr(16#/en/go/, '/'), 1) will return go
    0 讨论(0)
  • 2021-01-19 01:32
        $str = "File:MyFile.jpg";
    
        $position = strpos($str, ':');//get position of ':'
    
        $filename= substr($str, $position+1);//get substring after this position
    
    0 讨论(0)
  • 2021-01-19 01:36

    Two simple ways:

    $filename = str_replace('File:', '', 'File:MyFile.jpg');
    

    or

    $filename = explode(':', 'File:MyFile.jpg');
    $filename = $filename[1];
    
    0 讨论(0)
  • 2021-01-19 01:40

    You could use explode to do this: link.

    Something like:

    $string = "File:MyFile.jpg";
    list($protocol,$content) = explode(":", $string);
    echo $content;
    
    0 讨论(0)
提交回复
热议问题