PHP para extraer una cadena de comillas dobles
-
06-07-2019 - |
Pregunta
Tengo una cadena:
Este es un texto, " Su saldo restante $ 0.10 " ;, Fin 0
¿Cómo puedo extraer la cadena entre las comillas dobles y tener solo el texto (sin las comillas dobles):
Su saldo restante $ 0.10
He intentado preg_match_all ()
pero sin suerte.
Solución
Mientras el formato permanezca igual, puede hacerlo utilizando una expresión regular. " ([^ "] +) "
coincidirá con el patrón
- Comillas dobles
- Al menos una comilla no doble
- Comillas dobles
Los corchetes alrededor del [^ "] +
significa que esa parte se devolverá como un grupo separado.
<?php
$str = 'This is a text, "Your Balance left <*>.10", End 0';
//forward slashes are the start and end delimeters
//third parameter is the array we want to fill with matches
if (preg_match('/"([^"]+)"/', $str, $m)) {
print $m[1];
} else {
//preg_match returns the number of matches found,
//so if here didn't match pattern
}
//output: Your Balance left <*>.10
Otros consejos
Para todos los que buscan un analizador de cadenas con todas las funciones, intente esto:
(?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));
Uso en preg_match:
$haystack = "something else before 'Lars\' Teststring in quotes' something else after";
preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);
Devoluciones:
Array
(
[0] => 'Lars\' Teststring in quotes'
)
Esto funciona con fragmentos de cadena entre comillas simples y dobles.
Prueba esto:
preg_match_all('`"([^"]*)"`', $string, $results);
Debería obtener todas sus cadenas extraídas en $ resultados [1].
A diferencia de otras respuestas, esto admite escapes, p. " cadena con \ " entre comillas "
.
$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
La expresión regular '" ([^ \\ "] +) "'
coincidirá con cualquier cosa entre dos comillas dobles.
$string = '"Your Balance left <*>.10", End 0';
preg_match('"([^\\"]+)"', $string, $result);
echo $result[0];
Solo usa str_replace y escapa de la cita:
str_replace("\"","",$yourString);
Editar:
Lo siento, no vi que había texto después de la segunda cita. En ese caso, simplemente haría 2 búsquedas, una para la primera cita y otra para la segunda cita, y luego haría una substr para agregar todas las cosas entre las dos.