我可以使用哪个字符串函数来删除-
之后的所有内容?该字符串未预定义,因此rtrim()
不起作用。
9453-abcafaf3ceb895d7b1636ad24c37cb9f-100.png?1
答案 0 :(得分:6)
使用 split
explode
函数和“ - ”字符作为分隔符。它将返回一个字符串数组。如果您只关心第一个破折号之前的信息,只需使用返回数组的第0个索引。
编辑:
抱歉。在蟒蛇世界生活了好几个月后,首先想到的是分裂。 explode
是正确的功能。
编辑2:
strip
,lstrip
和rstrip
旨在用于修剪字符串末尾的空格。
答案 1 :(得分:4)
$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
?>
所以,基本上,你循环遍历元素并将它们连接起来,但现在我们正在跳过第一个元素。