Я пытаюсь определить, имеет ли строка какие-либо слова между двойными кавычками, используя preg_match_all
, однако это дублирует результаты, и первый результат имеет два набора двойных кавычек с обеих сторон, где, когда искомая строка имеет только один набор.Почему preg_match_all возвращает два матча?
Вот мой код:
$str = 'Test start. "Test match this". Test end.';
$groups = array();
preg_match_all('/"([^"]+)"/', $str, $groups);
var_dump($groups);
И вар свалка производит:
array(2) {
[0]=>
array(1) {
[0]=>
string(17) ""Test match this""
}
[1]=>
array(1) {
[0]=>
string(15) "Test match this"
}
}
Как вы можете видеть, что первый массив неправильно, почему preg_match_all
возвращение этого?
Оставьте скобки или добавьте несколько скобок, прочитайте руководство, и вы его исправьте. –
Пожалуйста, определите * неправильный *. Как это не соответствует вашим ожиданиям, которые дает http://php.net/preg_match_all? – hakre
Как вы не ошибаетесь, может быть и то, что вы вводите в заблуждение вывод var_dump здесь? – hakre