PHP para extrair uma string de aspas duplas
-
06-07-2019 - |
Pergunta
Eu tenho um string:
Este é um texto "o seu equilíbrio deixou US $ 0,10", End 0
Como posso extrair a corda entre as aspas duplas e têm apenas o texto (sem as aspas):
Seu saldo deixado $ 0,10
Eu tentei preg_match_all()
, mas sem sorte.
Solução
Enquanto as estadias de formato o mesmo que você pode fazer isso usando uma expressão regular. "([^"]+)"
irá corresponder ao padrão
- Faça duplo Citação
- Pelo menos um não-double-quote
- Faça duplo Citação
Os suportes em torno dos meios [^"]+
que essa porção será devolvido como um grupo separado.
<?php
$str = 'This is a text, "Your Balance left $0.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 $0.10
Outras dicas
Para todos caça para um analisador de cadeia cheio de recursos, tente o seguinte:
(?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));
Use em preg_match:
$haystack = "something else before 'Lars\' Teststring in quotes' something else after";
preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);
Retorna:
Array
(
[0] => 'Lars\' Teststring in quotes'
)
Isso funciona com fragmentos de cordas simples e duplas citado.
Tente isto:
preg_match_all('`"([^"]*)"`', $string, $results);
Você deve obter todas as suas cordas extraídos em $ resultados [1].
Ao contrário de outras respostas, Isto suporta escapes, por exemplo, "string with \" quote in it"
.
$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
O '"([^\\"]+)"'
expressão regular irá corresponder a qualquer coisa entre duas aspas.
$string = '"Your Balance left $0.10", End 0';
preg_match('"([^\\"]+)"', $string, $result);
echo $result[0];
Basta usar str_replace e escapar da citação:
str_replace("\"","",$yourString);
Editar:
Desculpe, não viu que não havia texto após a segunda citação. Nesse caso, eu simplesmente 2 pesquisas, um para a primeira citação e um para o 2º citação, e depois fazer um substr para extra Todas as coisas entre os dois.