我有一个字符串,我希望获得一定价值后的所有内容。该字符串始终以一组数字开头,然后是下划线。我想在下划线后得到其余的字符串。例如,如果我有以下字符串以及我想要返回的内容:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
我该如何做这样的事情?
答案 0 :(得分:261)
strpos()
找到下划线的偏移量,然后substr抓取该索引加1的所有内容。
$data = "123_String";
$whatIWant = substr($data, strpos($data, "_") + 1);
echo $whatIWant;
如果您还想检查字符串中是否存在下划线字符(_
),然后再尝试获取它,则可以使用以下内容:
if (($pos = strpos($data, "_")) !== FALSE) {
$whatIWant = substr($data, $pos+1);
}
答案 1 :(得分:10)
//Make sure to hold the strong reference to the moduleInitaliser
self.moduleInitialiser = RNModuleInitialiser()
self.bridge = RCTBridge(delegate: self.moduleInitialiser, launchOptions: nil)
是一个被忽视的功能。它的意思非常快。
strtok
像这样的空字符串将强制返回字符串的其余部分。
注意' _'之后什么也没有。您将获得$s = 233718_This_is_a_string;
$firstPart = strtok( $s, '_' );
$allTheRest = strtok( '' );
的{{1}}值,如documentation中所述,必须使用===进行测试,以区别于其他虚假值。
答案 2 :(得分:8)
以下是使用explode
:
$text = explode('_', '233718_This_is_a_string', 2)[1]; // Returns This_is_a_string
或:
$text = @end((explode('_', '233718_This_is_a_string', 2)));
通过为explode()
中的2
参数指定limit
,它返回具有由字符串分隔符分隔的2个最大元素的数组。返回第二个元素([1]
)将给出其余的字符串。
使用strpos
(由@flu建议),这是另一个单线:
$needle = '233718_This_is_a_string';
$text = substr($needle, (strpos($needle, '_') ?: -1) + 1); // Returns This_is_a_string
答案 3 :(得分:1)
如果有人需要提取字符串的第一部分,那么可以尝试,
<强>查询:强>
$s = "This_is_a_string_233718";
$text = $s."_".substr($s, 0, strrpos($s, "_"));
<强>输出:强>
This_is_a_string
答案 4 :(得分:0)
$str = '233718_This_is_a_string';
echo ltrim(strstr($str, '_'), '_'); // This_is_a_string
答案 5 :(得分:0)
$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"
答案 6 :(得分:0)
我使用strrchr()。例如,要找到文件的扩展名,我可以使用以下功能:
$string = 'filename.jpg';
$extension = strrchr( $string, '.'); //returns ".jpg"