Вопрос

Привет, мне нужна небольшая помощь.

Вот существующий код preg_match:

preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);

который хорошо справляется с обнаружением post_id в следующей строке URI:

http://www.example.com/health-and-fitness-tips/999/

Я считаю, что этого должно быть достаточно.

я меняю 999, post_id, к how-do-I-lose-10kg-in-12-weeks', thepost_title`, и вам необходимо изменить регулярное выражение pre_match, чтобы обнаружить новую строку.

Моей первой мыслью было просто добавить [a-z]- в конец регулярного выражения, создав следующее регулярное выражение:

"/(\/)([0-9][a-z]/-+)(\/?)$/"

Возможно, это так просто?Если нет, то что не так в вышесказанном?

Это было полезно?

Решение

Не совсем: ([0-9][a-z]/-+) это «число, за которым следует буква, за которой следует хотя бы одно тире».

Вы хотите ([-0-9a-z]+).

Другие советы

я бы просто использовал \w:

preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);

От Классы символов или наборы символов:

\w обозначает «характер слова», обычно [A-Za-z0-9_].Обратите внимание на включение подчеркивания и цифр.

\w означает слово, может состоять из букв как верхнего, так и нижнего регистра от A до Z и от a до z, цифр от 0 до 9 или _.Это эквивалентно [A-Za-z0-9_].Вы можете протестировать в онлайн-тестер здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top