Saltar al contenido

Eliminar comillas del inicio y final de la cadena en PHP

Solución:

La respuesta literal sería

trim($string,'"'); // double quotes
trim($string,''"'); // any combination of ' and "

Eliminará todas las comillas iniciales y finales de una cadena.

Si necesita eliminar estrictamente la primera y la última cita en caso de que existan, entonces podría ser una expresión regular como esta

preg_replace('~^"?(.*?)"?$~', '$1', $string); // double quotes
preg_replace('~^['"]?(.*?)['"]?$~', '$1', $string); // either ' or " whichever is found

Si necesita eliminar solo en caso de que la cita inicial y final estén estrictamente emparejadas, use la función de la respuesta de Steve Chambers

Sin embargo, si su objetivo es leer un valor de un archivo CSV, fgetcsv es la única opción correcta. Se ocupará de todos los casos extremos, eliminando también los recintos de valor.

Tenía una necesidad similar y escribí una función que eliminará las comillas simples o dobles iniciales y finales de una cadena:

/**
 * Remove the first and last quote from a quoted string of text
 *
 * @param mixed $text
 */
function stripQuotes($text) {
  return preg_replace('/^('(.*)'|"(.*)")$/', '$2$3', $text);
} 

Esto producirá los resultados que se enumeran a continuación:

Input text         Output text
--------------------------------
No quotes       => No quotes
"Double quoted" => Double quoted
'Single quoted' => Single quoted
"One of each'   => "One of each'
"Multi""quotes" => Multi""quotes
'"'"@";'"*&^*'' => "'"@";'"*&^*'

Demostración de expresiones regulares (que muestra lo que se está comparando / capturando): https://regex101.com/r/3otW7H/1

trim eliminará todas las instancias del char desde el principio y el final si coincide con el patrón que proporcionaste, por lo que:

$myValue => '"Hi"""""';
$myValue=trim($myValue, '"');

Se convertirá:

$myValue => 'Hi'.

Aquí hay una forma de eliminar solo el primer y último carácter si coinciden:

$output=stripslashes(trim($myValue));

// if the first char is a " then remove it
if(strpos($output,'"')===0)$output=substr($output,1,(strlen($output)-1));

// if the last char is a " then remove it
if(strripos($output,'"')===(strlen($output)-1))$output=substr($output,0,-1);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *