2017-07-01 1 views
0

Je dois supprimer une sous-chaîne du début des urls de nom de fichier.Comment faire pour supprimer une partie du nom d'un fichier dans une URL

La sous-chaîne que je dois supprimer est toujours une série de nombres puis un trait d'union puis le mot gallery puis un autre trait d'union.

par exemple. 2207-gallery-, 2208-gallery-, 1245-gallery-, etc.

Comment puis-je changer ceci:

http://img.pass.com:7710/img.pass.com/img-1/2207-gallery-25171-content_gallery-1428380843.jpg 

à ceci:

http://img.pass.com:7710/img.pass.com/img-1/25171-content_gallery-1428380843.jpg 

Le sous-chaîne à remplacer est toujours différent.

+0

S'il vous plaît, donnez plus de spécification: le texte à supprimer est toujours '2207-gallery-'? ou c'est juste un exemple? –

+0

@HamzaAbdaoui mis à jour – ATIKON

+0

Donc, ça peut être '2208-gallery-', '1245-gallery-' etc ...? –

Répondre

2

Cela correspondra 1 ou plusieurs chiffres puis tiret puis "galerie", puis tiret:

Motif: (Demo)

/\d+-gallery-/ 

Code PHP: (Demo)

$image='http://img.pass.com:7710/img.pass.com/img-1/2207-gallery-25171-content_gallery-1428380843.jpg'; 
echo preg_replace('/\d+-gallery-/','',$image); 

sortie :

http://img.pass.com:7710/img.pass.com/img-1/25171-content_gallery-1428380843.jpg 

Voici votre méthode non-regex:

echo substr($image,0,strrpos($image,'/')+1),substr($image,strpos($image,'-gallery-')+9); 
1

sur PHP faire ceci:

function renameURL($originalUrl){ 
    $array1 = explode("/", $originalUrl); 
    $lastPart = $array1[count($array1)-1];//Get only the name of the image 
    $array2 = explode("-", $lastPart); 
    $newLastPart = implode("-", array_slice($array2, 2));//Delete the first two parts (2207 & gallery) 
    $array1[count($array1)-1] = $newLastPart;//Concatenate the url and the image name 
    return implode("/", $array1);//return the new url 
} 
//Using the function : 
$url = renameURL($url); 

DEMO

+1

Alors que regex peut être plus lent que certaines méthodes non-regex, je ne trouve pas très intéressant d'écrire autant de code et d'exploiter 7 fonctions au lieu d'un seul appel preg_replace(). C'est ce que les concepteurs PHP ont créé pour les fonctions regex. – mickmackusa

1
function get_numerics ($str) { 
    preg_match_all('/\d+/', $str, $matches); 
    return $matches[0]; 
} 

$one = 'http://img.pass.com:7710/img.pass.com/img-1/2207-gallery-25171-content_gallery-1428380843.jpg'; 


$pos1 = strpos($one, get_numerics($one)[3]); 
$pos2 = strrpos($one, '/')+1; 
echo ((substr($one, 0, $pos2).substr($one, $pos1))); 

Voir il vous aider.

+0

Si vous utilisez regex, utilisez-le seul. Si vous ne voulez pas utiliser regex pour des raisons de vitesse ou autres, n'utilisez pas de fonctions regex. Il semble stupide de faire les deux dans la même méthode. – mickmackusa