我有一个字符串,我想在一定价值之后得到所有东西.该字符串始终以一组数字开头,然后是下划线.我想在下划线后得到其余的字符串.例如,如果我有以下字符串和我想要返回的内容:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
Run Code Online (Sandbox Code Playgroud)
我怎么能做这样的事呢?
dat*_*yss 296
该strpos()发现偏移下划线,那么SUBSTR抓住一切事情,从指数加1日起实施.
$data = "123_String";
$whatIWant = substr($data, strpos($data, "_") + 1);
echo $whatIWant;
Run Code Online (Sandbox Code Playgroud)
如果您还想在检查之前检查_字符串中是否存在下划线字符(),则可以使用以下命令:
if (($pos = strpos($data, "_")) !== FALSE) {
$whatIWant = substr($data, $pos+1);
}
Run Code Online (Sandbox Code Playgroud)
mik*_*ent 13
strtok这种事情是一个被忽视的功能.这意味着要快得多.
$s = '233718_This_is_a_string';
$firstPart = strtok( $s, '_' );
$allTheRest = strtok( '' );
Run Code Online (Sandbox Code Playgroud)
像这样的空字符串将强制返回字符串的其余部分.
注意如果'_'之后根本没有任何内容,你将获得一个FALSE值$allTheRest,如文档中所述,必须使用===进行测试,以区别于其他假值.
Pin*_*ana 12
我使用 strrchr()。例如,要查找文件的扩展名,我使用此函数:
$string = 'filename.jpg';
$extension = strrchr( $string, '.'); //returns ".jpg"
Run Code Online (Sandbox Code Playgroud)
这是使用方法explode:
$text = explode('_', '233718_This_is_a_string', 2)[1]; // Returns This_is_a_string
Run Code Online (Sandbox Code Playgroud)
要么:
$text = @end((explode('_', '233718_This_is_a_string', 2)));
Run Code Online (Sandbox Code Playgroud)
通过指定2为limit在参数explode(),则返回用2层由字符串分隔符分隔最大的元件阵列.返回第二个元素([1]),将给出其余的字符串.
$needle = '233718_This_is_a_string';
$text = substr($needle, (strpos($needle, '_') ?: -1) + 1); // Returns This_is_a_string
Run Code Online (Sandbox Code Playgroud)
$str = '233718_This_is_a_string';
echo ltrim(strstr($str, '_'), '_'); // This_is_a_string
Run Code Online (Sandbox Code Playgroud)
在您的情况下,仅 ltrim() 就足够了:
echo ltrim($str, '0..9_'); // This_is_a_string
Run Code Online (Sandbox Code Playgroud)
但前提是字符串的右侧部分(_之后)不以数字开头,否则也会被修剪。