Он смотрит на меня, как ваше регулярное выражение может быть упрощена что-то вроде:
(?i)^/stuff/other-stuff/[\w-.]+$
Это будет выглядеть так:
<?php
$regex="~(?i)^/stuff/other-stuff/([\w-./]+)$~";
$string = "/stuff/other-stuff/foo-AB123456.html";
$hit = preg_match($regex,$string,$m);
echo $m[0]."<br />";
echo $m[1]."<br />";
?>
Выход:
/stuff/other-stuff/foo-AB123456.html
foo-AB123456.html
Обратите внимание, что это может быть сделано в ряде различных способов.
Ниже приведены некоторые сведения о регулярном выражении.
~
разделитель лучше, чем оригинальный /
, потому что вы не должны избежать косой черты.
- Скобки в
([\w-.]+)
захвата конца URL в группе 1. Именно поэтому $m[1]
дает foo-AB123456.html
- После финального слэш
[\w-./]+
совпадает с любым количеством букв или цифр, подчеркивания, тире, точки и слеша. Это «мини-спецификация» для тех персонажей, которые мы ожидаем там. Если вы хотите что-то разрешить, вы можете пойти с простой точкой.
Что должно соответствовать '[^ \ /] \ +?'? – Robin