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