php для извлечения строки из двойных кавычек
-
06-07-2019 - |
Вопрос
У меня есть строка:
Это сообщение: "На вашем балансе осталось $ 0.10", Конец 0
Как я могу извлечь строку между двойными кавычками и получить только текст (без двойных кавычек):
На вашем балансе осталось $0.10
Я пытался preg_match_all()
но безуспешно.
Решение
Пока формат остается неизменным, вы можете делать это с помощью регулярного выражения. "([^"]+)"
будет соответствовать шаблону
- Двойные кавычки
- По крайней мере, одна не содержащая двойных кавычек
- Двойные кавычки
Скобки вокруг [^"]+
означает, что эта часть будет возвращена как отдельная группа.
<?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
Другие советы
Для всех, кто ищет полнофункциональный анализатор строк, попробуйте следующее:
(?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));
Использовать в preg_match:
$haystack = "something else before 'Lars\' Teststring in quotes' something else after";
preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);
ВОЗВРАТ:
Array
(
[0] => 'Lars\' Teststring in quotes'
)
Это работает с фрагментами строк, заключенными в одинарные и двойные кавычки.
Попробуйте это:
preg_match_all('`"([^"]*)"`', $string, $results);
Вы должны получить все свои извлеченные строки в $ results [1].
В отличие от других ответов, он поддерживает экранирование, например " строка с \ " указывайте в нем "
.
$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
Регулярное выражение '" ([^ \\ "] +) "'
будет совпадать между двумя двойными кавычками.
$string = '"Your Balance left <*>.10", End 0';
preg_match('"([^\\"]+)"', $string, $result);
echo $result[0];
Просто используйте str_replace и экранируйте кавычку:
str_replace("\"","",$yourString);
Редактировать:
Извините, не заметил, что после 2-й цитаты был текст.В этом случае я бы просто выполнил 2 поиска, один для первой цитаты и один для 2-й цитаты, а затем выполнил substr, чтобы добавить все данные между ними.