PHP, чтобы извлечь строку из двойной кавычки

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

Это текст «Ваш баланс остался $ 0,10», конец 0

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

Ваш баланс остался $ 0.10

я пытался preg_match_all() но без удачи.

21

Решение

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

  • Дважды цитатой
  • По крайней мере, одна не двойная кавычка
  • Дважды цитатой

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

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

Другие решения

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

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

Используйте в preg_match:

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

Возвращает:

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

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

15

Попробуй это :

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

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

9

В отличие от других ответов, это поддерживает экранирование, например "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];
0

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

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

Редактировать:

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

-7
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector