|
|
|
| Не могу написать регулярное выражение, которое отсеит все что стоит после последнего слеша, независимо от того что там будет написано. Количество директорий может быть переменным, поэтому количество слешей заранее не известно. Если конечно их специально не считать. Ссылки могут быть на русском и на латинском.
<?php
// $_SERVER['REQUEST_URI'] может иметь вид
// /раскрутка_сайтов/русские_символы_в_url/?играюсь
// /раскрутка_сайтов/русские_символы_в_url/index.php?
// /раскрутка_сайтов/русские_символы_в_url/так_ли_нужны_русские_буквы_в_url
$uri = rawurldecode($_SERVER['REQUEST_URI']);
$dir = preg_replace('/нужно составить такое выражение/u', '', $uri);
// чтобы на выходе (в $dir) получилось /раскрутка_сайтов/русские_символы_в_url/
|
Спасибо. | |
|
|
|
|
|
|
|
для: deimand
(12.03.2012 в 18:12)
| | Попробуйте так
<?php
// $_SERVER['REQUEST_URI'] может иметь вид
// /раскрутка_сайтов/русские_символы_в_url/?играюсь
// /раскрутка_сайтов/русские_символы_в_url/index.php?
// /раскрутка_сайтов/русские_символы_в_url/так_ли_нужны_русские_буквы_в_url
$uri = rawurldecode($_SERVER['REQUEST_URI']);
$dir = preg_replace('|^(/раскрутка\s+сайтов/русские\s+символы\s+в\s+url/)(.*)$|u', '\\1', $uri);
// чтобы на выходе (в $dir) получилось /раскрутка_сайтов/русские_символы_в_url/
| или вместо раскрутка_сайтов/русские_символы_в_url может быть что угодно не обязательно эти фразы? | |
|
|
|
|
|
|
|
для: cheops
(12.03.2012 в 19:43)
| | Да, текст может быть каким угодно. Но есть закономерность - последний слэш. Грубо говоря получить все до последнего слэша включительно, или обрезать все после последнего слэша. Кажется просто, а вот сделать рабочее решение не удается.
Всегда можно рассплитовать строку через слэш, откинуть крайний элемент массива и снова собрать, но хотелось бы элегантно, в одну строчку. | |
|
|
|
|
|
|
|
для: deimand
(12.03.2012 в 20:27)
| | Обязательно РВ? Может проще?
explode();
array_pop();
implode();
|
| |
|
|
|
|
|
|
|
для: Sfinks
(12.03.2012 в 21:13)
| | Проще да. | |
|
|
|
|
|
|
|
для: deimand
(12.03.2012 в 21:34)
| | не увидел вашу строку "Всегда можно рассплитовать строку...."
Можно так:
<?
$str = substr( $str , 0 , strrpos( $str , "/" ) ) . "/";
// или
$str = substr( $str , 0 , strrpos( $str , "/" )+1 );
|
| |
|
|
|
|
|
|
|
для: deimand
(12.03.2012 в 21:34)
| | Скорее даже не проще, а так будет действительно лучше.
Есть такая проблема:
Если ипользовать в htaccess выражение перенаправляющее все на index.php
RewriteRule !.(gif|css|jpg|jpeg|png|ico|zip|doc)$ index.php [L]
| то приписывая к ссылке какой-нибудь свободный текст, можно наставить на одну страницу миллион модификаций ссылок, плюс ко всему будет дергаться каждый раз центрально ядро, вместо того чтобы просто отдать статический файл.
Вот собственно этот головняк я и решаю.
Варианты с обратными прокси серверами для кэширования не подходят, так как работает кроссдоменный механизм, основанный на этом API и чем более внимательным будет собственный механизм кэширования, тем меньше запросов будет приходить на мозг всей сети.
Я уже все сделал, вопрос решен, всем спасибо. | |
|
|
|