jkm

Рейтинг
120
Регистрация
20.02.2014

Сей баг можно объявить фичей :)

Там изначально в шаблоне кусок $\s+ захватывал любое количество подряд идущих пробелов и переносов строк.

В результате текст обрабатывался как если бы пустых строк не было вовсе.

Решается разделением блоков строками с любым символом.

Например:

консалт строй плюс
консалт строй
;
консалт медиа групп
консалт медиа
;
консалт

Вообще, такое поведение легко исправить, заменив $\s+ на \r?\n. Тогда поиск будет останавливаться на пустых строках, как положено.


<html><body>
<textarea id="t1" rows="20" cols="60">Исходный набор
</textarea>
<br>
<button id="btn1" onClick="proc()">Go</button>
<br><br>
<textarea id="t2" rows="20" cols="60">Результат
</textarea>
<script>

function proc(){

str = document.getElementById('t1').value;
pos = 0;
res = [];
do {
i = 0;
str = str.substr(pos).replace(/^((.+) (?:.+)$(?:\r?\n\2 (?:.+)$)*)\r?\n\2(?= *$)/m,
function(m0, m1, m2, offset, s){
i = 1;
pos = offset + m1.length;
res.push(s.substr(0, pos));
regexp = new RegExp("^" + m2.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'mg');
return m0 + m0.replace(regexp, '').trim().replace(/(^|\s+)-?/g, ' -');
});
} while (i);
document.getElementById('t2').value = res.join('') + str;
}
</script>
</body>
</html>

Вариант с RewriteRule тоже рабочий только нужно ставить сразу после RewriteEngine On.

Для RewriteRule порядок следования правил имеет значение.

Если ставить в конец после

RewriteRule .* index.php

то редирект не сработает.

Кеш браузера сбросьте.

Использовать не Redirect а RewriteRule.

Вставлять сразу после RewriteEngine On


RewriteRule ^load/all_files/games/1$ /games/? [R=301,L]

Директива Redirect модуля mod_alias предназначена для перенаправления не отдельных страниц, а всего содержимого каталогов.

Пример Redirect /old /new

Результат работы:

/old => /new

/old/category => /new/category

/old/category/page => /new/category/page

Redirect 301 /раздел/236-категория /раздел/236-категория/5438-статья

Произойдет зацикливание

/раздел/236-категория/5438-статья => /раздел/236-категория/5438-статья/5438-статья

Использование RedirectMatch позволяет дейтсвовать более избирательно.

RedirectMatch 301 /раздел/236-категория/?$ /раздел/236-категория/5438-статья

Шаблон RewriteRule ^/раздел результата не даст потому что сравнение будет с адресом без начального слеша.

Вам все верно посоветовали RewriteRule ^раздел.

Подробнее тут http://habrahabr.ru/company/sprinthost/blog/129560/

http://habrahabr.ru/post/210388/

Поиск дублей по изображениям товаров.


<html><body>
<textarea id="t1" rows="20" cols="60">Исходный набор
</textarea>
<br>
<button id="btn1" onClick="proc()">Go</button>
<br><br>
<textarea id="t2" rows="20" cols="60">Результат
</textarea>
<script>

function proc(){

str = document.getElementById('t1').value;
pos = 0;
res = [];
do {
i = 0;
str = str.substr(pos).replace(/^((.+) (?:.+)$(?:\s+\2 (?:.+)$)*)\s+\2(?= *$)/m,
function(m0, m1, m2, offset, s){
i = 1;
pos = offset + m1.length;
res.push(s.substr(0, pos));
return m0 + ' -' + m0.replace(new RegExp("^"+m2,'mg'), '').trim().replace(/\s+-?/g, ' -');
});
} while (i);
document.getElementById('t2').value = res.join('') + str;
}
</script>
</body>
</html>

Или так


<textarea id="t1" rows="20" cols="60">Исходный набор
</textarea>
<br>
<button id="btn1" onClick="proc()">Go</button>
<br><br>
<textarea id="t2" rows="20" cols="60">Результат
</textarea>
<script>

function proc(){
lines = document.getElementById('t1').value.replace(/^\s*(.+)\s+\S+\s*$(\s*\1\s+\S+\s*$)*\s*\1(?=\s*$)/mg,
function(m0, m1){
return m0 + ' -' + m0.replace(new RegExp(m1,'g'), '').trim().replace(/\s+/g, ' -');
});

document.getElementById('t2').value = lines;
}
</script>

<script.*?</script>

И не забыть поставить галку чтобы точка совпадала и с переносами строк.

/ru/forum/comment/13267190;postcount=8

У меня Notepad++ v6.3.3

Попробуйте в фильтр поставить * или вообще оставить пустым

Всего: 750