Php 从开始到结束获取字符串
我有一个字符串,1006_20170731_1.png我只想得到这一部分:1006_20170731_我如何使用php得到它?我在理解strop和substr时遇到了困难。有人能帮忙吗?Php 从开始到结束获取字符串,php,Php,我有一个字符串,1006_20170731_1.png我只想得到这一部分:1006_20170731_我如何使用php得到它?我在理解strop和substr时遇到了困难。有人能帮忙吗?pathinfo函数可以满足您的需要。请参阅文档-。尝试此功能 function trimStringEndingByDelim($str, $delim = "_", $endingDelim = true) { //explode string into an array of every valu
pathinfo
函数可以满足您的需要。请参阅文档-。尝试此功能
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;
}
它接受您的字符串并在每个下划线处将其转换为数组,删除最后一个数组元素,然后返回使用内爆函数重新添加下划线的字符串
如果需要,也可以传递不同的分隔符,例如$var=removeEnd(“this | is | a | string | 1.png”,“|”)将返回this | is | string |
您可以通过将第三个参数设置为“false”来切换结束分隔符,默认情况下,它会在结尾添加分隔符
$var=removeEnd(“this | is | a | string | 1.png”,“|”,false)
将返回this | is | a | string
使用此函数的另一个好处是,无论使用多少分隔符,只要您始终只想修剪最后一个分隔符,此函数都可以工作。这可以很容易地进行修改,以删除您想要的任意多个端点。以下是一个简单的示例:
在这里,尝试以下操作:
$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
将包含您所需的字符串
说明:
explode()
使用第一个参数作为分隔符将字符串拆分为数组。然后,我们将前两部分连接起来,并根据您的要求在它们之间添加下划线,我们就得到了结果
请检查相应的参考文件:
对于更一般的方法:
现在,您的$result
将包含第一个n
部分,根据需要用分隔符分隔
文档:
目前,希望您自己尝试编写代码。之后,如果你有问题,你可以张贴你已经尝试了一个明确的解释什么是不工作,并提供一个解决方案。我建议你读一个好的问题和答案。此外,请务必阅读。虽然您的答案适用于此特定用例,你应该试着写一些更具普遍帮助性和更具动态性的答案,希望它能帮助其他使用案例稍有不同的读者更好^。^path\u info
可以得到1006\u 20170731\u 1
OP wants1006\u 20170731\u
无法判断这是不是打字错误。。。为什么有人想要尾随的
?但是你是对的,这个函数不是他想要的,如果他的意图与原始问题中所写的完全一致的话。
$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;