2012-05-27 31 views
11

Dada la siguiente cadena¿Cómo eliminar una subcadena de una cadena usando PHP?

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

me gustaría utilizar substr o trim (o lo que consideran más apropiados) para devolver este

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

, es decir, para eliminar el -100x100. Todas las imágenes que necesito tendrán esa etiqueta al final del nombre del archivo, inmediatamente antes de la extensión.

Parece que hay respuestas para esto en SO re Ruby y Python, pero no PHP/específicas para mis necesidades.

How to remove the left part of a string?

Remove n characters from a start of a string

Remove substring from the string

¿Alguna sugerencia?

+3

¿Planeas codificar de forma rígida el valor de la subcadena? ¿O desea hacer coincidir cualquier forma de subcadena -WIDTHxHEIGHT.ext? –

+0

¿Te importaría vincular las versiones de Ruby y Python que encontraste? Las técnicas utilizadas allí son probablemente relevantes. – Ryan

+0

@minitech - agregué algunos enlaces en OP – pepe

Respuesta

24

Si desea hacer coincidir todos los valores de anchura/altura:

$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); 

Demostración: http://codepad.org/cnKum1kd

El patrón utilizado es bastante básico:

/  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

gracias JS - ¡Sabía que en algún momento llegaría una expresión regular! – pepe

+0

después de todo está dicho y hecho, esta puede ser la solución versátil, en caso de que estas miniaturas terminen cambiando de tamaño – pepe

+0

+1 para la explicación clara de la expresión regular – rdjs

3

Si -100x100 son los únicos caracteres que intenta eliminar de todas sus cadenas, ¿por qué no utilizar str_replace?

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

¡perfecto! ¿Quién respondió primero? – 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); 

Utilice -100x100.jpg para una solución a prueba de balas.

+0

Pero necesita la extensión para permanecer, así que agregue '.jpg' como el valor de reemplazo –

+0

MihaiStancu: acaba de editar mi respuesta. Gracias. – flowfree

Cuestiones relacionadas