FAQ
Hola lista:
Tengo el siguiente problema: en un formulario subo una imagen pero esta puede tener el siguiente formato:
------------
Imagen 1.jpg
Imagen_1.jpg
Imagen-1.jpg
------------
Entonces lo que quiero hacer es sustituir los caracteres para que el nombre me quede siempre en la forma:
------------
Imagen1.jpg
------------
Pense hacerlo con str_replace pero entonces tendria que poner tantos str_replace como caracteres quiera remplazar, o sea:
PHP:
-----
$primero = str_replace("-","",$imagen);
$segundo = str_replace("_","",$primero);
$tercero = str_replace(" ","",$segundo);

No tengo claro si con expresiones regulares se pueda hacer o con alguna que otra funcion de PHP como: preg_replace(), ereg(), eregi(), eregi_replace(), str_replace(), y preg_match(). Tanmpoco se trabajar muy bien con las expresiones regulares, se que alguna vez en mi ingeniería las use cuando recibí la asignatura Sistemas Operativos pero en ese entonces tampoco la comprendi muy bien. Espero que me puedan ayudar al respecto

Salu2
ReynierPM
4to. año Ing. Informática
Usuario registrado de Linux: #310201
*************************************************************************
El programador superhéroe aprende de compartir sus conocimientos.
Es el referente de sus compañeros. Todo el mundo va a preguntarle y él, secretamente, lo fomenta porque es así como adquiere su legendaria
sabiduría: escuchando ayudando a los demás...

Search Discussions

  • Marcos Ramírez at Feb 5, 2006 at 3:28 pm

    El Domingo, 5 de Febrero de 2006 05:35, Reynier Perez Mira escribió:
    ------------
    Pense hacerlo con str_replace pero entonces tendria que poner tantos
    str_replace como caracteres quiera remplazar, o sea: PHP:
    -----
    $primero = str_replace("-","",$imagen);
    $segundo = str_replace("_","",$primero);
    $tercero = str_replace(" ","",$segundo);

    Esto puedes simplificarlo mucho más desde PHP 4.0.5:

    $Eliminar=array (' ', '-'. '_');
    $imagen=str_replace($Eliminar, '', $imagen);


    --
    Marcos Ramirez (www.marcos-ramirez.info) .:: Linux Registered User #349823 ::.
    Debian SID Kernel 2.6.14.2.

    Antes de preguntar nada, lee! y recuerda, Google es tu amigo, yo no.
    http://www.sindominio.net/ayuda/preguntas-inteligentes.html

    No acepto adjuntos en formato WORD/Office:
    http://breu.bulma.net/?l3192
  • Rafael at Feb 6, 2006 at 1:55 am
    Marcos ya te indicó cómo lo podrías hacer con str_replace(), y sí,
    también se puede resolver con expresiones regulares:

    $imagen = preg_replace('/[- _]/X', '', $imagen);

    Como ves, la expresión es bastante simple, y sólo para tratar de dejar
    perfectamente claro la intención, trataré de explicarla...

    Primero que nada, tú ya has definido el conjunto de caracteres que
    deberá reemplazar: ' ', '-' y '_', así que éstos los podemos agrupar en
    una "clase"(¹) (un conjunto, encerrado entre corchetes): '[- _]'

    Y finalmente completamos la expresión regular. En la familia preg_* se
    utilizan expresiones tipo PERL (de hecho son PCRE, "Perl Compatible
    Regular Expressions"), y éstas requieren un indicador de inicio y fin de
    la expresión (por costumbre un slash '/') Tras el indicador de cierre
    se agregan los modificadores, en este caso no es necesario ninguno (yo
    utilizo 'X', pero es también por costumbre :))

    ¹ En las "clases" se pueden indicar rangos, y para esto se usan
    los guiones '-' (e.g: '[a-z]' = a..z, '[a-z0-9]' = a..z + 0..9);
    para evitar que el guión sea mal interpretado se agrega al inicio
    de la clase (i.e. justo después del corchete de apertura)
    Cuando son expresiones más complejas que un sólo caracter (e.g:
    dos caracteres), éstas se agrupan dentro de un paréntesis,
    separadas por un OR '|': '(\s|-|_)'. Pero en casos de un sólo
    caracter las "clases" son mucho más eficientes.

    Perdón si exageré con la pseudo-explicación.

    Reynier Perez Mira wrote:
    Hola lista: Tengo el siguiente problema: en un formulario subo una
    imagen pero esta puede tener el siguiente formato:
    ------------
    Imagen 1.jpg
    Imagen_1.jpg
    Imagen-1.jpg
    ------------
    Entonces lo que quiero hacer es sustituir los caracteres para que el
    nombre me quede siempre en la forma:
    ------------
    Imagen1.jpg
    ------------
    Pense hacerlo con str_replace pero entonces tendria que poner tantos
    str_replace como caracteres quiera remplazar, o sea: PHP:
    -----
    $primero = str_replace("-","",$imagen);
    $segundo = str_replace("_","",$primero);
    $tercero = str_replace(" ","",$segundo);

    No tengo claro si con expresiones regulares se pueda hacer o con
    alguna que otra funcion de PHP como: preg_replace(), ereg(), eregi(),
    eregi_replace(), str_replace(), y preg_match(). Tanmpoco se trabajar
    muy bien con las expresiones regulares, se que alguna vez en mi
    ingeniería las use cuando recibí la asignatura Sistemas Operativos
    pero en ese entonces tampoco la comprendi muy bien. Espero que me
    puedan ayudar al respecto
    --
    Atentamente,
    J. Rafael Salazar Magaña
    Innox - Innovación Inteligente
    Tel: +52 (33) 3615 5348 ext. 205 / 01 800 2-SOFTWARE
    Cel: +52 (33) 1042 8382
    rsalazar@innox.com.mx
    http://www.innox.com.mx

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedFeb 5, '06 at 3:37a
activeFeb 6, '06 at 1:55a
posts3
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase