2012-05-27 21 views
11

die folgende ZeichenfolgeWie entferne ich einen Teilstring aus einem String mit PHP?

http://thedude.com/05/simons-cat-and-frog-100x100.jpg 

Da möchte ich substr oder trim verwenden (oder was auch immer Sie finden geeignetere) dieses

http://thedude.com/05/simons-cat-and-frog.jpg 

zurückzuversetzen, die -100x100 zu entfernen ist. Alle Bilder, die ich brauche, werden am Ende des Dateinamens direkt vor der Erweiterung angezeigt.

Es scheint Antworten auf SO auf Ruby und Python zu geben, aber nicht PHP/speziell für meine Bedürfnisse.

How to remove the left part of a string?

Remove n characters from a start of a string

Remove substring from the string

Irgendwelche Vorschläge?

+3

Möchten Sie den Wert der Teilzeichenfolge fest codieren? Oder möchten Sie eine beliebige -WIDTHxHEIGHT.ext Form der Teilzeichenfolge? –

+0

Würden Sie gerne eine Verbindung zu den Ruby und Python Versionen herstellen, die Sie gefunden haben? Die dort verwendeten Techniken sind wahrscheinlich relevant. – Ryan

+0

@minitech - hinzugefügt ein paar Links in OP – pepe

Antwort

24

Wenn Sie keine Breite/Höhe Werte entsprechen:

$path = "http://thedude.com/05/simons-cat-and-frog-100x100.jpg"; 

    // http://thedude.com/05/simons-cat-and-frog.jpg 
    echo preg_replace("/-\d+x\d+/", "", $path); 

Demo: http://codepad.org/cnKum1kd

Das verwendete Muster ist ziemlich einfach:

/  Denotes the start of the pattern 
-  Literal - character 
\d+ A digit, 1 or more times 
x  Literal x character 
\d+ A digit, 1 or more times 
/ Denotes the end of the pattern
+4

danke JS - Ich wusste, dass irgendwann eine Regex kommen würde! – pepe

+0

schließlich ist dies die vielseitige Lösung, falls diese Thumbnails sich in der Größe ändern – pepe

+0

+1 für die klare Erklärung der Regex – rdjs

3

Wenn -100x100 die einzigen Zeichen sind, die Sie aus allen Ihren Strings entfernen möchten, verwenden Sie bitte str_replace?

$url = "http://thedude.com/05/simons-cat-and-frog-100x100.jpg"; 
str_replace("-100x100", "", $url); 
+1

perfekt thx! Wer hat zuerst geantwortet? – pepe

14
$url = "http://thedude.com/05/simons-cat-and-frog-100x100.jpg"; 
$new_url = str_replace("-100x100","",$url); 
6
$url = str_replace("-100x100.jpg", '.jpg', $url); 

Verwenden Sie -100x100.jpg für kugelsichere Lösung.

+0

Aber er braucht die Erweiterung zu bleiben, also fügen Sie '.jpg' als der Ersatzwert –

+0

MihaiStancu: gerade meine Antwort bearbeitet. Vielen Dank. – flowfree

Verwandte Themen