2016-02-24 4 views
2

У меня есть следующая строка:получить содержимое из строки PHP регулярного выражения

$string = '["["123456","NAME","1","INFORMATION","15/12/2015","","","0","OTHER ATTRIBUTE","",""]","["["123", "OTHER"]"'; 

Я хочу, чтобы извлечь буквенно-цифровую информацию между двойными кавычками, я пытался с этим ответом

Regex to get content between single and double quotes php

, но на выходе было ли это,

[0]=> array(12) { [0]=> string(3) ""["" [1]=> string(3) "","" [2]=> string(3) "","" [3]=> string(3) "","" [4]=> string(3) "","" [5]=> string(3) "","" [6]=> string(3) "","" [7]=> string(3) "","" [8]=> string(3) "","" [9]=> string(3) "","" [10]=> string(3) "","" [11]=> string(3) ""]"" } [1]=> array(12) { [0]=> string(1) """ [1]=> string(1) """ [2]=> string(1) """ [3]=> string(1) """ [4]=> string(1) """ [5]=> string(1) """ [6]=> string(1) """ [7]=> string(1) """ [8]=> string(1) """ [9]=> string(1) """ [10]=> string(1) """ [11]=> string(1) """ } [2]=> array(12) { [0]=> string(1) "[" [1]=> string(1) "," [2]=> string(1) "," [3]=> string(1) "," [4]=> string(1) "," [5]=> string(1) "," [6]=> string(1) "," [7]=> string(1) "," [8]=> string(1) "," [9]=> string(1) "," [10]=> string(1) "," [11]=> string(1) "]" } 

Как я могу это достичь?

ответ

1

Ваш вход "["123456" ... отличается от link you mentioned. И никакой отдельной цитаты здесь нет.

Идея будет требовать в шаблон с \wword character, по крайней мере, один [A-Za-z0-9_]

if(preg_match_all('/"([^"]*?\w[^"]*)"/', $string, $out) > 0) 
    print_r($out[1]); 
  • [^"]* матчей любое количество символов, которые являются not". ? после * делает его lazy.
  • Найти совпадения в $1 Что взяли на себя первые capture group (в скобках).

See demo and more explanation at regex101 или PHP demo at eval.in

+0

Как я могу установить позицию в массиве генерируемой где есть только «?», Я имею в виду не существует буквенно-цифровых символов, но должно быть положение там. –

+1

@JoseRojas Привет! Вы можете сделать группу необязательной с '?' После нее: ['" ([^ "] *? \ W [^"] *)? "'] (Https://regex101.com/r/mZ5wF5/1) [см. демонстрацию] (https://eval.in/525478) –

+0

это работает, спасибо! –

Смежные вопросы