Reemplazar guiones (-) y guiones bajos (_) con espacios en PHP

1 jul 2018, 17:21:30
Vistas: 19.6K
Votos: 0

Quiero reemplazar guiones y guiones bajos con espacios en este nombre de archivo de imagen:

text1_text2-10212-etc_125.jpg (resultado de un plugin)

Mi código es: $string = preg_replace('/[\-_]/',' ', $file['name']);

Estoy intentando con str_replace y preg_replace pero no funciona. Este código es parte del plugin Advanced Image Grabber (en class_image_grabber.php)

//toma una URL de imagen como argumento y la guarda en la biblioteca multimedia
// devuelve Null en caso de fallo
static public function imageUpload($imageUrl) {
    $file = array();
    $file['name'] = basename($imageUrl);
    $file['tmp_name'] = download_url($imageUrl);
    if (is_wp_error($file['tmp_name'])):
    @unlink($file['tmp_name']);
    return NULL;
    endif;
    $attachmentId = media_handle_sideload($file, 0);
    // crea las miniaturas
    $attach_data = wp_generate_attachment_metadata( $attachmentId,  get_attached_file($attachmentId));
    wp_update_attachment_metadata( $attachmentId,  $attach_data );
    return $attachmentId;   
}//EOF
3
Comentarios

$string = str_replace( array( '-', '_' ), ' ' , $file['name'] );. Pero recuerda que estos cambios desaparecerán después de actualizar el plugin.

Max Yudin Max Yudin
1 jul 2018 17:33:52

No funcionó. El resultado es text1-text2-10212-etc_125.jpg. Si quito un espacio el resultado es: text1text210212etc125.jpg. 2 años sin actualizar. Tal vez el autor olvidó este plugin :D

Aube Aube
1 jul 2018 18:55:20

¿Qué imprime echo $file['name'];?

Max Yudin Max Yudin
2 jul 2018 11:07:08
Todas las respuestas a la pregunta 1
1
-1
$file_name = "text1_text2-10212-etc_125.jpg";
$result = preg_replace("/[\-_]/", " ", $file_name);
ECHO $result;

SALIDA

text1 text2 10212 etc 125.jpg

Enlace para DEMOSTRACIÓN

3 jul 2018 12:15:18
Comentarios

La pregunta ya incluye esa línea de código. Ellos ya saben esa parte. Lo que están preguntando es cómo hacerlo en el contexto de una imagen subida por un plugin. Esta respuesta no aborda la pregunta real.

Jacob Peattie Jacob Peattie
3 jul 2018 13:53:34