使用哪个PHP String函数?

时间:2010-07-18 00:52:57

标签: php string

我可以使用哪个字符串函数来删除-之后的所有内容?该字符串未预定义,因此rtrim()不起作用。

  

9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1

7 个答案:

答案 0 :(得分:6)

使用 split explode函数和“ - ”字符作为分隔符。它将返回一个字符串数组。如果您只关心第一个破折号之前的信息,只需使用返回数组的第0个索引。

编辑:
抱歉。在蟒蛇世界生活了好几个月后,首先想到的是分裂。 explode是正确的功能。

编辑2:
striplstriprstrip旨在用于修剪字符串末尾的空格。

答案 1 :(得分:4)

您可以使用substrstrpos

$id = substr($path, 0, strpos($path, '-'));

或者preg_replace

$id = preg_replace('/(.*?)-.*/', '\1', $path);

答案 2 :(得分:2)

如果您知道字符串的左侧部分始终是数字,则可以使用PHP的自动类型转换,只需将其添加到零。 (假设你的意思是第一个连字符)

试试这个:

print 0 + '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1'; //outputs 9453

答案 3 :(得分:1)

这取决于哪个破折号?我建议使用explode并获取所需字符串部分的数组元素。看看:http://php.net/explode

同样,这将非常依赖于字符串中的破折号,并且可能需要额外的逻辑。

答案 4 :(得分:1)

我相信他想摆脱最右边的 - 。在这种情况下,您可以使用正则表达式:

$s = '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1';
$str = preg_replace('!-[^-]*$!', '', $s);

echo $str; // outputs 9453-abcafaf3ceb895d7b1636ad24c37cb9f

答案 5 :(得分:1)

可能比preg_replace更快:

$str = '9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1';

$str = explode('-', $str);
array_pop($str);
$str = implode('-', $str) . '-';

// result = 9453-abcafaf3ceb895d7b1636ad24c37cb9f-

答案 6 :(得分:0)

如果你想在第一个连字符之前排除所有内容并连接其他所有连字符,你可以这样做:

<?php
$str='9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1';

$str = explode('-', $str);
$count = count($str);

// So far we have the string exploded but we need to exclude
// the first element of the array and concatenate the others

$new = ''; // This variable will hold the concatenated string

for($i=1;$i<$count;++$i){
    $new.=$str[$i];
}

echo $new; // abcafaf3ceb895d7b1636ad24c37cb9f100.png?1
?>

所以,基本上,你循环遍历元素并将它们连接起来,但现在我们正在跳过第一个元素。