PHP - 在分隔符后返回所有内容

时间:2013-04-19 12:34:26

标签: php string

SO中有similar questions,但我找不到任何完全相同的内容。我需要删除所有(包括)特定分隔符的内容。例如,给定字符串File:MyFile.jpg,我需要删除:之前的所有内容,以便我只剩下MyFile.jpg。提前谢谢!

7 个答案:

答案 0 :(得分:8)

使用此preg_replace调用:

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

或者避免正则表达式并使用像这样的爆炸:

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

编辑:使用这种方法来避免正则表达式(如果可以有多个:在字符串中):

$arr = explode(':', 'File:MyFile.jpg:foo:bar');
unset($arr[0]);
$repl = implode(':', $arr); // MyFile.jpg:foo:bar

答案 1 :(得分:2)

编辑:这个工作正常。

$str = "File:MyFile.jpg";
$str = substr( $str, ( $pos = strpos( $str, ':' ) ) === false ? 0 : $pos + 1 );

答案 2 :(得分:2)

更短的代码:

要返回 出现的所有之前,请使用strtok。例如:

  • strtok(16#/en/go, '#')将返回16

要返回 出现的所有 AFTER ,请使用strstr。例如:

  • strstr(16#/en/go, '#')将返回#/en/go(包括搜索字符 '#')
  • substr(strstr(16#/en/go, '#'), 1)将返回/en/go

要返回 字符的所有内容 ,请使用strrchr。例如:

  • strrchr(16#/en/go, '/')将返回/go(包括搜索字符 '/')
  • substr(strrchr(16#/en/go/, '/'), 1)将返回go

答案 3 :(得分:1)

您可以使用explode执行此操作:link

类似的东西:

$string = "File:MyFile.jpg";
list($protocol,$content) = explode(":", $string);
echo $content;

答案 4 :(得分:1)

    $str = "File:MyFile.jpg";

    $position = strpos($str, ':');//get position of ':'

    $filename= substr($str, $position+1);//get substring after this position

答案 5 :(得分:0)

两种简单的方式:

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

$filename = explode(':', 'File:MyFile.jpg');
$filename = $filename[1];

答案 6 :(得分:0)

示例字符串:

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

将字符串转换为数组

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

检查结果:

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

声明一个数组变量

$pipe = 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; }

最终结果:

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