我有一个字符串,1006_20170731_1.png我想只得到这部分:1006_20170731_如何使用php获取此信息?我在理解strpos和substr方面遇到了麻烦。有人可以帮忙吗?
答案 0 :(得分:1)
尝试此功能
function trimStringEndingByDelim($str, $delim = "_", $endingDelim = true) {
//explode string into an array of every value between the delimiter
$explodedString = explode($delim, $str);
//remove the very last array element (in your case "1.png")
array_pop($explodedString);
//glue the remaining array elements back together with the delimiter
$implodedString = implode($delim, $explodedString);
//if $endingDelim is true return the string with the delimiter glued to the end
//if it is false, just return the string
if($endingDelim) return $implodedString.$delim;
return $implodedString;
}
它接受你的字符串并将其转换为每个下划线点的数组,删除最后一个数组元素,然后返回带有使用implode函数重新添加下划线的字符串。
如果需要,您还可以传递不同的分隔符,例如$var = removeEnd("this|is|a|string|1.png","|")
将返回this|is|a|string|
您可以通过将第3个参数设置为" false"来切换结束分隔符,默认情况下它会在末尾添加分隔符。
$var = removeEnd("this|is|a|string|1.png","|",false)
会返回this|is|a|string
使用此功能的额外好处是,无论使用多少分隔符,它都可以使用,只要您始终只想修剪最后一个分隔符。这可以很容易地修改,以删除许多你想要的结束。
答案 1 :(得分:1)
以下是一个简单示例:https://iconoun.com/demo/temp_jopekz.php
<?php // demo/temp_jopekz.php
/**
* Substrings
*
* https://stackoverflow.com/questions/45421271/get-string-from-beginning-up-to-2nd-underscore-php
*/
error_reporting(E_ALL);
echo '<pre>';
$str = '1006_20170731_1.png';
$dlm = '_';
$arr = explode($dlm, $str);
array_pop($arr);
$new = implode($dlm, $arr) . $dlm;
echo PHP_EOL . $str;
echo PHP_EOL . $new;
答案 2 :(得分:1)
在这里,试试这个:
$str = "1006_20170731_1.png";
$parts = explode('_', $str);
$result = $parts[0] . '_' . $parts[1] . '_';
现在,$result
将包含您需要的字符串。
<强>解释强>
explode()
使用第一个参数作为分隔符将字符串拆分为数组。然后我们加入前两个部分,并根据您的要求在它们之间添加下划线,我们得到了结果。
请查看相应的参考文档: explode()
有关更一般的方法:
$str = "1006_20170731_1.png";
$delimiter = '_';
$parts = explode($delimiter, $str);
// if we only need to take the first n parts
$n = 2;
$firstNparts = array_slice($parts, 0, $n);
$result = implode($delimiter, $firstNparts) . $delimiter;
现在,您的$result
将包含按分隔符分隔的第一个n
部分。
答案 3 :(得分:-1)
pathinfo
功能可以满足您的需求。请参阅文档 - http://php.net/manual/en/function.pathinfo.php。