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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top