У меня есть строка:
Это текст, «Ваш баланс оставил $ 0.10», Конец 0
- как преобразовать японский английский характер нормальному английскому персонажу?
- Манипулировать строку URL, добавляя параметры GET
- PHP Soap Server: создайте экземпляр со строкой (строка xml) вместо файла WSDL (url к нему)
- замените ereg_replace на preg_replace
- вставить массив в строку, разделенную запятыми, из запроса mysql
- PHP Добавить тире для декодирования
Как я могу извлечь строку между двойными кавычками и иметь только текст (без двойных кавычек):
Ваш баланс оставил $ 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].
В отличие от других ответов, это поддерживает escape- "string with \" quote in it"
, например "string with \" quote in it"
.
$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
Регулярное выражение '"([^\\"]+)"'
будет соответствовать любому из двух двойных кавычек.
$string = '"Your Balance left $0.10", End 0'; preg_match('"([^\\"]+)"', $string, $result); echo $result[0];
Просто используйте str_replace и избегайте цитаты:
str_replace("\"","",$yourString);
Редактировать:
Извините, не видел, что после второй цитаты был текст. В этом случае я бы просто 2 поисковых запроса, один для первой цитаты и один для 2-й цитаты, а затем сделать субстрат для добавления всего материала между ними.