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

Вы инициализируете один и тот же массив дважды. Ваша программа будет работать так же, если вы используете любой из следующих параметров:

myArray = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9 , 10};

или

myArray = new int[10]; for (int i = 0; i < myArray.length; i++) { this.myArray[i]=i+1; }

, поскольку ваш массив не является двумерным массивом, поэтому вы не можете назначить другой массив элементам массива.

this.myArray = new int[i]; // not correct
25
задан Just Plain High 18 June 2013 в 00:58
поделиться

6 ответов

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

  • Двойные кавычки
  • По крайней мере одна без двойных кавычек
  • Двойные кавычки

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

<?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
57
ответ дан 28 November 2019 в 17:57
поделиться

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

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

Использование в preg_match:

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

Возвращает:

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

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

16
ответ дан 28 November 2019 в 17:57
поделиться

Попробуйте:

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

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

9
ответ дан 28 November 2019 в 17:57
поделиться

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

$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
5
ответ дан 28 November 2019 в 17:57
поделиться

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

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

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

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

-8
ответ дан 28 November 2019 в 17:57
поделиться

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

$string = '"Your Balance left $0.10", End 0';
preg_match('"([^\\"]+)"', $string, $result);
echo $result[0];
-1
ответ дан 28 November 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: