2010-11-14 67 views
0

我从数据库检索文件位置和名称的最后几个大字,都是这种格式PHP切割的文件名

http://domain.com/subdir/etc/etc/etc/picimage-niceone_Main-150x150.jpg

他们都是动态的,所以有数百人所有与不同的名字,但有一点是不变的是最后 - 然后是文件的尺寸。

我需要做的是剥去最后一切后 - 所以它变成以下内容。

http://domain.com/subdir/etc/etc/etc/picimage-niceone_Main.jpg

任何帮助将是真棒。

干杯,

回答

1
$stringName = "picimage-niceone_Main-150x150.jpg"; 
$newName = substr($stringName,0,strrpos($stringName,"-")).substr($stringName,-4); 

这将删除最后-和文件扩展名之间的任何东西。

+0

完美..谢谢 – Chris 2010-11-14 08:30:34

+1

我的答案可能不是最好的,但谢谢 – 2010-11-14 08:32:19

0
$newname = preg_replace("/-[^-.]*(\\.[a-zA-Z]*)$/", '$1', $oldname); 
1

preg_replace()

$url = preg_replace('/\-(\d+)x(\d+)(\.\w+)$/', '$3', $url); 

即找到一个连字符,数字,一个“X”,一个数字,一个扩展,只有后缀替换整个事情。

或者,如果你真的想知道这些宽度和高度分别为(例如填充<IMG>标签属性:

$url = 'http://domain.com/subdir/etc/etc/etc/picimage-niceone_Main-150x150.jpg'; 
$regex = '/(.*?)-(\d+)x(\d+)(\.\w+)$/'; 
if (preg_match($regex, $url, $matches)) { 
    $width = $matches[2]; 
    $height = $matches[3]; 
    $url = $matches[1] . $matches[4]; 
} 
+0

我真的应该学习正则表达式有一天不要我.. – 2010-11-14 08:30:04