я получил следующую строку:preg_match_all все комбинации со словом bounderies
$string = "König Friedrich August III. von Sachsen - Adel Sachsen, Waidmannsheil, Kapitaler 16ender erlegt auf der Jagd am 2. Oktober 1905, gelaufen 30.06.1909, Verlag, Karlowa Walter, Dresden";
Теперь я wan't найти слова в этой строке с помощью preg_match_all:
preg_match_all("/\b(abituria)\b|\b(absolvia)\b|\b(adel sachsen)\b|\b(adel)\b|\b(sachsen)\b|\b(könig)\b/i",$string,$matches);
строка соответствует только
array(
0 => "König",
1 => "Adel Sachsen"
)
, но мне нужно, чтобы он также возвращал «Адель» в $ matches-Array.
Как я могу это сделать? Я думаю, что моя проблема в том, что: «После того, как найден первый матч, последующие поиски продолжаются с конца последнего совпадения».
Update
Это не работает:
preg_match_all('/(?=\b(adel sachsen|adel)\b)/ui', $string, $matches);
print_r($matches[1]);
Array
(
[0] => Adel Sachsen
)
preg_match_all('/(?=\b(adel|adel sachsen)\b)/ui', $string, $matches);
print_r($matches[1]);
Array
(
[0] => Adel
)
Но мне нужно следующее как результат:
Array
(
[0] => Adel Sachsen,
[1] => Adel
)
Если конкретная часть шаблона регулярного выражения соответствует тексту, то другой шаблон не будет пытаться снова совместить тот же текст. –