gormarket

gormarket
Рейтинг
47
Регистрация
29.12.2010

OBender013, Вы не на тот форум обратились с этим вопросом, попытайте счастья на оконном форуме (forum-okna.ru)


$text = 'текст1[HEADER]
текст2[CUT]
текст3';
$substr = preg_split("/\[HEADER\]|\[CUT\]/m",$text);

части текста будут в элементах массива $substr[0], $substr[1] и $substr[2]

Когда для меня возник такой вопрос, посмотрев что есть на эту тему в сети, я

остановился на стандарте ISO 9 (Транслитерация славянских алфавитов с возможность восстановления текста в исходном виде, система Б)

В системе А несколько символов, "неподходящих" для URL при транслитерации русского языка (в системе Б всего 1 - "`")

Вставил на сайт 2 функции на PHP (превод в транслит и обратно), но при использовнии таких адресов на сайте заменяю "`" на "%60"

С поисковиками проблем не возникает, но вот если ссылку размещают на сторонних сайтах, бывает что адрес обрезается по "`", или заменяется "`" на "~"


// функция превода текста из кириллицы в траскрипт
function translite($st){
// Сначала заменяем "односимвольные" фонемы.
$st=strtr($st,'абвгдезийклмнопрстуфх','abvgdezijklmnoprstufx');
$st=strtr($st,'АБВГДЕЗИЙКЛМНОПРСТУФХ','ABVGDEZIJKLMNOPRSTUFX');
// Затем - "многосимвольные".
$st=strtr($st,array(
'ё'=>'yo', 'ж'=>'zh', 'ц'=>'cz', 'ч'=>'ch', 'ш'=>'sh',
'щ'=>'shh', 'ъ'=>'``', 'ы'=>'y`', 'ь'=>'`', 'э'=>'e`', 'ю'=>'yu', 'я'=>'ya',
'Ё'=>'YO', 'Ж'=>'ZH', 'Ц'=>'CZ', 'Ч'=>'CH', 'Ш'=>'SH',
'Щ'=>'SHH', 'Ъ'=>'``', 'Ы'=>'Y`', 'Ь'=>'`', 'Э'=>'E`', 'Ю'=>'YU', 'Я'=>'YA'
)
);
return $st;
}
// функция превода текста из траскрипта в кириллицу
function untranslite($st){
// Сначала заменяем "многосимвольные" фонемы.
$st=strtr($st,array(
'yo'=>'ё', 'zh'=>'ж', 'cz'=>'ц', 'ch'=>'ч', 'sh'=>'ш',
'shh'=>'щ', '``'=>'ъ', 'y`'=>'ы', '`'=>'ь', 'e`'=>'э', 'yu'=>'ю', 'ya'=>'я',
'YO'=>'Ё', 'ZH'=>'Ж', 'CZ'=>'Ц', 'CH'=>'Ч', 'SH'=>'Ш',
'SHH'=>'Щ', '``'=>'ъ', 'Y`'=>'Ы', '`'=>'ь', 'E`'=>'Э', 'YU'=>'Ю', 'YA'=>'Я'
)
);
// Затем - "односимвольные"
$st=strtr($st,'abvgdezijklmnoprstufx','абвгдезийклмнопрстуфх');
$st=strtr($st,'ABVGDEZIJKLMNOPRSTUFX','АБВГДЕЗИЙКЛМНОПРСТУФХ');
return $st;
}

P.S. похоже у меня не полностью ISO 9, там Х->H, а у меня Х->X


RewriteRule ^node1/([^/]*)$ node1/node2/node3/$1 [NC,R=301,L]

все что идет после "node1/" (если там нет "/") редиректится на то-же самое в папку "node1/node2/node3/"

попробуйте сделать замену

"# \w+ района', 'mou#"

или

"# [А-Яа-я]+ района', 'mou#"

на

"', 'mou"

Очевидно у Вас все-таки нельзя полностью избавляться от праметров в URL.

Попробуйте так:


RewriteCond %{QUERY_STRING} ^(.*)cid=[0-9]+(.*)$ [NC]
RewriteRule ^(.*)$ $1?%1%2 [L,R=301]

Будет выполняться редирект, если в параметрах есть "cid=цифры" (с удалением только этого параметра).

kbv79:
А если поменять строчки:
Redirect permanent /obzory.htm/page.htm сайт/obzory/page.htm
Redirect permanent /obzory.htm/page.htm /obzory/

То все, работает!

Мне кажется вторая строчка здесь вообще не нужна, до нее дело не дойдет, ее входной адрес всегда первая строка перехватит (ведь у них он одинаковый).

Если Вы только что создали такой htaccess то может быть в следующем:

у Вас первое правило

RewriteRule ^news-(.*)$ index.php [L,QSA]

имеет два условия (что документ не файл и не каталог).

Вы в курсе, что условия относятся обычно только к одному правилу, которое стоит за ними первым ?

(т.е. ко всем остальным правилам эти условия не применяются, а если они нужны для других правил, то их нужно вставить перед каждым правилом).

Я конечно не знаю структуры Вашего сайта, может эти условия и не нужны, но вдруг...

Получается что

Redirect permanent /obzory.htm сайт/blog/obzory/

заменяет в строке

"/obzory.htm/page.htm"

"/obzory.htm" на "сайт/blog/obzory/"

и редиректит на "сайт/blog/obzory//page.htm"

Так ?

И на какой адрес нужно переадресовать /obzory.htm/page.htm ?

Не приходилось работать с

Redirect permanent

пользовался только RewriteRule

Но судя по тому, что сейчас нашел в сети, Redirect permanent не использует регулярные выражения, так что строка, что Вы привели

Redirect permanent /1.htm/1.htm сайт/blog/1/1.htm

здесь не причем (что в ней написано, то она и делает)

может есть Redirect permanent содержащий "obzory"

Или срабатывает какая-то другая строка RedirectMatch или RewriteRule

(а двойные слеши - это у Вас нормальное явление ?

сайт/blog/1//1.htm ?

)

Всего: 437