Php 从开始到结束获取字符串

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

我有一个字符串,1006_20170731_1.png我只想得到这一部分:1006_20170731_我如何使用php得到它?我在理解strop和substr时遇到了困难。有人能帮忙吗?

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 wants
1006\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;