Проблема: при использовании жестко заданной строки это работает. Однако, используя мой контент Dynami c из $ post_content, регулярное выражение возвращает пустой массив. Я ожидаю, что он вернет мой ожидаемый результат, где он получает все результаты из группы захвата 1 в массиве из этой этой функции регулярного выражения .
У меня есть следующая функция:
$post_content = (string)strstr($post_content, 'MyNeedle', true);
Если я print_r () результат этой функции:
"Je naam (verplicht) [text* your-test] Je e-mailadres (verplicht) [email* your-tester] Onderwerp [text your-testerer] Je bericht [textarea your-testererer] [submit \"Verzenden\"] 1 Postcode [text* postalCode] Adres [email* streetAddress] Onderwerp [text your-subject] Je bericht [textarea your-message] [submit \"Verzenden\"] 1";
Если я var_dump () результат этой функции:
string(278) " Je naam (verplicht) [text* your-test] Je e-mailadres (verplicht) [email* your-tester] Onderwerp [text your-testerer] Je bericht [textarea your-testererer] [submit "Verzenden"] 1 " string(258) " Postcode [text* postalCode] Adres [email* streetAddress] Onderwerp [text your-subject] Je bericht [textarea your-message] [submit "Verzenden"] 1 "
У меня есть следующее функция регулярного выражения :
preg_match_all($re, $post_content, $fields);
Ожидаемый результат:
array(3) {
[0]=>
string "Je naam (verplicht)"
[1]=>
string "Je e-mailadres (verplicht)"
[2]=>
string "Onderwerp"
}
et c.
Мой вывод:
array(1) {
[0]=>
string(0) ""
}
array(1) {
[0]=>
string(0) ""
}
Полный пример кода:
// DOESNT WORK
$post_content = (string)strstr($post_content, 'MyNeedle', true);
// WORKS
$post_content = "Je naam (verplicht) [text* your-test] Je e-mailadres (verplicht) [email* your-tester] Onderwerp [text your-testerer] Je bericht [textarea your-testererer] [submit \"Verzenden\"] 1 Postcode [text* postalCode] Adres [email* streetAddress] Onderwerp [text your-subject] Je bericht [textarea your-message] [submit \"Verzenden\"] 1";
// REST OF THE FUNC
$re = '/([^][\s]+(?:\h+[^][\s]+)*)?\h+\[(?:\w+\*?\h+)?([^][]+)]/';
preg_match_all($re, $post_content, $fields);
$uniqueKeys = array_unique($fields[1]);
var_dump($uniqueKeys);
Почему группа захвата 1 не возвращает ожидаемое значение, когда я использую функцию strstr?