2010-11-14 8 views
0

Je suis en train de récupérer l'emplacement des fichiers et des noms à partir d'une base de données, sont dans ce formatPHP Couper les derniers caractères d'un nom de fichier

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

Ils sont dynamiques, donc il y a des centaines d'entre eux, toutes avec noms différents, mais une chose est constante est la dernière - et puis les dimensions du fichier.

Ce que je dois faire est de tout enlever après le dernier - ainsi il se transforme en ce qui suit.

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

Toute aide serait génial.

Cheers,

Répondre

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

Cela permettra d'éliminer tout entre le dernier - et l'extension de fichier.

+0

parfait .. Merci – Chris

+1

Ma réponse est sans doute pas le meilleur, mais je vous remercie –

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

Regardez preg_replace():

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

à savoir trouver un trait d'union, un numéro, un 'x', un numéro et une extension, et remplacer le tout avec seulement l'extension.

Alternativement, si vous voulez vraiment savoir ce que les valeurs de largeur et de hauteur ont été (par exemple pour remplir balise <IMG> attributs:

$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

je devrais vraiment apprendre des expressions régulières un jour je ne .. –

Questions connexes