#php #regex
#php #регулярное выражение
Вопрос:
Я хотел бы, чтобы регулярное выражение заменяло расширение файла .html на / so www.example.com/page.html становится www.example.com/page /. Я также хочу исключить папку из этого правила, чтобы что-нибудь внутри www.example.com/specialdir / должен быть исключен.
РЕДАКТИРОВАТЬ: это будет использоваться в php
Комментарии:
1. Какой вкус регулярного выражения? На каком языке или редакторе?
2. это будет использоваться в php
3. В каком контексте отображается URL-адрес? Это само по себе или это просто одна часть более длинной строки? Есть ли более одного в более длинной строке? Будет ли в URL-адресе когда-либо запрос или фрагменты? Всегда полезно предоставить несколько желаемых примеров до и после репрезентативных примеров.
Ответ №1:
Лучше использовать htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [L,QSA]
Источник: Snipplr
Так что это изменит все http://somesite/someurl чтобы http://somesite/someurl.html на стороне сервера.
Комментарии:
1. Я хочу, чтобы все было наоборот …. удалить .html и не добавлять. Также я хочу добавить исключение, когда правило не применяется к определенной папке
2. @thearchitect, проведите небольшое исследование по htaccess и mod_rewrite. Вероятно, это ответ, который вы ищете.
3. @thearchitect мой код не перенаправляет пользователя на страницу .html. Это вносит изменения на стороне сервера, и пользователь видит на панели задач: somesite.com/somepage вместо того , чтобы somesite.com/somepage.html
Ответ №2:
Поиск
(www.example.com/(?!specialdir/).*).html$
и замените все на 1
или $1
, в зависимости от вашей реализации регулярных выражений.
РЕДАКТИРОВАТЬ: в PHP:
$result = preg_replace('%(www.example.com/(?!specialdir/).*).html$%', '1', $subject);