Answers:
该strpos()
发现偏移下划线,那么SUBSTR抓住一切事情,从指数加1日起实施。
$data = "123_String";
$whatIWant = substr($data, strpos($data, "_") + 1);
echo $whatIWant;
如果您还想_
在尝试获取字符串之前检查下划线字符()是否存在,可以使用以下命令:
if (($pos = strpos($data, "_")) !== FALSE) {
$whatIWant = substr($data, $pos+1);
}
if (($pos = strpos($data, "_")) !== FALSE) { $whatIWant = substr($data, $pos+1); }
substr($data, (strrpos($data, '_') ?: -1) +1)
。
function StrAfterStr($S, $H) { return (($P = strpos($S, $H)) !== false) ? substr($S, $P + 1) : false; }
strtok
是这种事情的一个被忽视的功能。它的意思是相当快。
$s = '233718_This_is_a_string';
$firstPart = strtok( $s, '_' );
$allTheRest = strtok( '' );
像这样的空字符串将强制返回其余字符串。
注意:如果'_'之后没有任何内容,您将得到一个FALSE
值$allTheRest
,如文档中所述,必须使用===对其进行测试,以区别于其他虚假值。
strtok('a_b', '_')
将返回a
但strtok('_b', '_')
将返回b
,而不是您期望的空字符串
这是使用方法explode
:
$text = explode('_', '233718_This_is_a_string', 2)[1]; // Returns This_is_a_string
要么:
$text = @end((explode('_', '233718_This_is_a_string', 2)));
通过指定2
为limit
在参数explode()
,则返回用2层由字符串分隔符分隔最大的元件阵列。返回第二个元素([1]
),将给出其余的字符串。
这是通过使用另一种方法strpos
(如@flu所建议):
$needle = '233718_This_is_a_string';
$text = substr($needle, (strpos($needle, '_') ?: -1) + 1); // Returns This_is_a_string
$string = "233718_This_is_a_string";
$withCharacter = strstr($string, '_'); // "_This_is_a_string"
echo substr($withCharacter, 1); // "This_is_a_string"
在一个陈述中就是这样。
echo substr(strstr("233718_This_is_a_string", '_'), 1); // "This_is_a_string"