Подтвердить что ты не робот

Php для извлечения строки из двойной кавычки

У меня есть строка:

Это текст, "Ваш баланс оставил $0.10", Конец 0

Как я могу извлечь строку между двойными кавычками и иметь только текст (без двойных кавычек):

Остаток оставил $0.10

Я пробовал preg_match_all(), но не повезло.

4b9b3361

Ответ 1

Пока формат остается таким же, вы можете сделать это, используя регулярное выражение. "([^"]+)" будет соответствовать шаблону

  • Дважды цитата
  • Как минимум одна не-двойная кавычка
  • Дважды цитата

Скобки вокруг [^"]+ означают, что эта часть будет возвращена как отдельная группа.

<?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

Ответ 2

Для всех, кто ищет полнофункциональный синтаксический анализатор строк, попробуйте следующее:

(?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));

Использовать в preg_match:

$haystack = "something else before 'Lars\' Teststring in quotes' something else after";
preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);

Возврат:

Array
(
    [0] => 'Lars\' Teststring in quotes'
)

Это работает с одиночными и двойными кавычками фрагментов строки.

Ответ 3

Попробуйте следующее:

preg_match_all('`"([^"]*)"`', $string, $results);

Вы должны получить все извлеченные строки в $results [1].

Ответ 4

В отличие от других ответов, это поддерживает escape-последовательности, например. "string with \" quote in it".

$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));

Ответ 5

Регулярное выражение '"([^\\"]+)"' будет соответствовать любому из двух двойных кавычек.

$string = '"Your Balance left $0.10", End 0';
preg_match('"([^\\"]+)"', $string, $result);
echo $result[0];

Ответ 6

Просто используйте str_replace и избегайте цитаты:

str_replace("\"","",$yourString);

Edit:

Извините, не заметил, что после второй цитаты был текст. В этом случае я бы попросил 2 поисковых запроса, один для первой цитаты и один для второй цитаты, а затем сделать субстрат для добавления всего материала между ними.