2013-06-20 5 views
1

$ спички возвращает пустой массив ...preg_match_all возвращает пустой массив

это не работает

$missedvalue = $_GET['missedvalue']; 
$pattern = "/(?:\"(?:\\\\\"|[^\"])+\")/is"; 
preg_match_all($pattern, $missedvalue, $matches); 

, но это работает

$missedvalue = 'test "gift card"'; 
$pattern = "/(?:\"(?:\\\\\"|[^\"])+\")/is"; 
preg_match_all($pattern, $missedvalue, $matches); 

Что сделка? Я не могу бросить пальцем на него ... Я пытался отличить $missedvalue как (string), но это не сработало. Я в недоумении. oh и $_GET['missedvalue'] определенно равен test "gift card".

ответ

1

Почему бы не использовать одинарные кавычки в шаблоне так:

+0

Потому что я спотыкаюсь по регулярному выражению и всегда просто должен использовать то, что я могу найти. Однако использование ur regex все равно не помогло. – Banning

+1

Вы можете показать мне вывод 'var_dump ($ _ GET ['missedvalue']);' – anubhava

+0

'string 'test " подарочная карта "' (длина = 26)' – Banning

1

Я попробовал ваш код на моей машине, и это работает для меня. Может быть, вы делаете что-то в $ pattern или какую-то предварительную обработку, происходящую с заголовком, прежде чем запускать регулярное выражение ...?

+0

Я просто попробовал это 'str_replace ('"', '=', $ _REQUEST ['missedvalue']) 'и он не удаляет двойные кавычки .. hmmmm – Banning