php per estrarre una stringa dalla doppia virgoletta
-
06-07-2019 - |
Domanda
Ho una stringa:
Questo è un testo, "Il tuo saldo ha lasciato $ 0,10", Fine 0
Come posso estrarre la stringa tra virgolette doppie e avere solo il testo (senza le virgolette doppie):
Il saldo ha lasciato $ 0,10
Ho provato preg_match_all ()
ma senza fortuna.
Soluzione
Finché il formato rimane lo stesso, puoi farlo usando un'espressione regolare. " ([^ "] +) "
corrisponderà al modello
- Fare doppio citazione
- Almeno una virgoletta non doppia
- Fare doppio citazione
Le parentesi attorno a [^ "] +
indicano che quella parte verrà restituita come gruppo separato.
<?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
Altri suggerimenti
Per tutti coloro che cercano un parser di stringhe completo, prova questo:
(?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));
Usa in preg_match:
$haystack = "something else before 'Lars\' Teststring in quotes' something else after";
preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);
Returns:
Array
(
[0] => 'Lars\' Teststring in quotes'
)
Funziona con frammenti di stringa tra virgolette singole e doppie.
Prova questo:
preg_match_all('`"([^"]*)"`', $string, $results);
Dovresti ottenere tutte le stringhe estratte in $ results [1].
A differenza di altre risposte, supporta le fughe, ad es. " stringa con \ " citazione in esso "
.
$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
L'espressione regolare '" ([^ \\ "] +) "'
corrisponderà a qualsiasi cosa tra due virgolette doppie.
$string = '"Your Balance left <*>.10", End 0';
preg_match('"([^\\"]+)"', $string, $result);
echo $result[0];
Basta usare str_replace e sfuggire alla citazione:
str_replace("\"","",$yourString);
Modifica:
Siamo spiacenti, non ho visto il testo dopo la seconda citazione. In quel caso, farei semplicemente 2 ricerche, una per la prima citazione e una per la seconda citazione, e poi farei un substr per aggiungere tutte le cose tra i due.