我的字符串:
$string = '/my-picture-gallery-1000x2000.jpg';
我需要删除字符串中最后一次出现的“-”(包括“-”)之后的所有内容,并在“。”处停止。在字符串中。
因此输出应为:
/my-picture-gallery.jpg
但是我需要它停止并保留“。”之后的所有内容。
答案 0 :(得分:3)
应该能够结合使用PHP的strstr内置函数和str_replace来获得想要的结果
$string = '/my-picture-gallery-1000x2000.jpg';
echo str_replace(strrchr($string, '-'), '', $string) . strstr($string, '.');
那会让你离开:
/my-picture-gallery.jpg
可读性更高的版本
$string = '/my-picture-gallery-1000x2000.jpg';
$dimensions = strrchr($string, '-');
$extension = strrchr($string, '.');
$image = str_replace($dimensions, '', $string) . $extension;
答案 1 :(得分:2)
$string = '/my-picture-gallery-1000x2000.jpg';
echo substr($string,0,strrpos($string,'-')) . substr($string,strrpos($string,'.'));
答案 2 :(得分:0)
您可以使用 explode()函数。它返回字符串数组。只需选择一部分字符串,然后将它们组合成一个字符串即可。 有关 explode()函数的更多信息,位于:http://php.net/manual/en/function.explode.php
答案 3 :(得分:0)
尝试一下:
$string = '/my-picture-gallery-1000x2000.jpg';
$ext= strstr($string, '.');
$dash=strrpos($string,'-');
$filename= substr($string, 0 ,$dash);
echo $filename.$ext;
简而言之,您可以使用:
$filename = substr($string, 0 ,strrpos($string,'-')).strstr($string, '.');
答案 4 :(得分:0)
if(false !== $pos = strrpos($string, '-'))
$s = substr($string, 0, $pos);
首先使用反向搜索检查机针是否在高位堆栈中。然后从开始到找到位置都获取字符串。
根据您的编辑,使用正则表达式将是适当的。这还具有可以处理UTF8文件路径的优点。
$new_name = preg_match('~^(.*)-[^-.]*(\..*)$~u', $string, $matches)
? $matches[1].$matches[2]
: $string
;