[^(tex)] и [^tex] - одно и тоже, ибо [] - это один символ
Все проверил, потестил в различных ситуациях, работает отлично
((?!abc).)* - любая последовательность символов, кроме abc; или правильнее - ноль или более символ перед которыми нет последовательности символов abc
Используя символ "|" можем задавать несколько исключений
((?!abc|qwerty|asdfg|zxcv).)*
простой пример
$text=preg_replace('~<a[^>]*href=.?http.?://[^>]*>(((?!</a|текст1|проба2).)*)</a>~si','<B>тут была ссылка, а теперь этот текст</B>', $text);
// заменяет все ссылки, кроме ссылок содержащих слова "текст1" и "проба2"
Опишите задачу полностью, а не ваш вариант её решения и может быть получится вам помочь
Конкретной задачи нет, просто в работе довольно часто с такими выражениями сталкиваюсь (когда необходимо обрабатать только ту часть строки, которая не содержит определенную последовательность символов), и все время приходится решать задачу используя обходные пути, для каждого слачая свои. А при наличии такого паттерна все решалось бы одной строкой.
/(?!abc)(def)/i - захватит строку 'def', перед которой нет строки 'abc'
Спасибо, сейчас копаю в этом направлении, что то типа ((?!abc).)*
Тогда так:
RewriteEngine On
RewriteBase /
RewriteRule ^(1.html|news/2.html|3.html|4.html)$ http://www.new.com/ [R=301,L]
символом "|" разделяешь варианты обращения
Или если Вам необходим редирект только с тех страниц которых нет, прописываете:
ErrorDocument 404 /error.php
А в файле error.php делаете 301й редирект на сайт
На сайте www.you.net.ru размещаете .htaccess со следующим содержимым:
RewriteEngine On
RewriteRule ^(.*)$ http://www.new.com/ [R=301,L]
[^(tex)] и [^tex] - одно и тоже, ибо [] - это один символ
Все проверил, потестил в различных ситуациях, работает отлично
((?!abc).)* - любая последовательность символов, кроме abc; или правильнее - ноль или более символ перед которыми нет последовательности символов abc
Используя символ "|" можем задавать несколько исключений
((?!abc|qwerty|asdfg|zxcv).)*
простой пример
$text=preg_replace('~<a[^>]*href=.?http.?://[^>]*>(((?!</a|текст1|проба2).)*)</a>~si','<B>тут была ссылка, а теперь этот текст</B>', $text);// заменяет все ссылки, кроме ссылок содержащих слова "текст1" и "проба2"
Фуух.. :)
Всем большое спасибо за участие
Спасибо всем за ответы.
Конкретной задачи нет, просто в работе довольно часто с такими выражениями сталкиваюсь (когда необходимо обрабатать только ту часть строки, которая не содержит определенную последовательность символов), и все время приходится решать задачу используя обходные пути, для каждого слачая свои. А при наличии такого паттерна все решалось бы одной строкой.
Спасибо, сейчас копаю в этом направлении, что то типа ((?!abc).)*
echo implode($out[0]);
Это тоже один из вариантов решения конкретного примера
его даже лучше на строковых функциях реализовать.
В случае с
$text=preg_replace('~<a[^>]*href=.?http.?://[^>]*>([^</a]*)</a>~i','$1', $text);он уже безполезенНет, мне необходим именно паттерн
Я понимаю, то что привел в примере может реализовыватся и другими способами, примеров может быть много.
[^tex] - это любой символ кроме "t", "e" и "x"
паттерн, который интересует - это любая последовательность символов, кроме "tex"
Вот еще пример:
$text=preg_replace('~<a[^>]*href=.?http.?://[^>]*>([^</a]*)</a>~i','$1', $text);Удаление ссылок.
[^</a] - любой символ кроме "<", "/" и "a"
это работает, когда в качестве ссылки только текст, а если там картинка или BB-коды, паттерн не подойдет
попробуй
<?php
if (!empty($_GET["lng"])) { $lng=$_GET["lng"]; }
else { $lng=0; }
if (!empty($_GET["pg"])) { $pg=$_GET["pg"]; }
else { $pg=0; }
if ($lng=="ru" && $pg) {
@header('HTTP/1.1 301 Moved Permanently');
@header('Location: http://www.site.ru/articles'.$pg.'.php');
}
else { @header("HTTP/1.0 404 Not Found"); }
?>
Но странно всё таки, писем должно быть больше, большинство каталогов всётаки высылает
Сколько обычно приходит писем?
У меня у самого не более 900 приходит
С точки зрения ПС: вреда ни какого нет, ибо ПС не выполнют сценарии js
С точки зрения посетителя: жрет трафик и время, ибо приходится открывать левые сайты
По поводу belaruslife.ru, цель размешения таких фреймов - накрутка счетчиков сайтов открываемых во фреймах
Я бы не стал работать с такими рекламодателями
Вот так выглядит часть html-кода страницы с включенным результатом работы js-скриптов exnews.org, beleruslife.ru и googlesyndication.com
=> homekin.info подгружается js-скриптом beleruslife.ru
Проверяется элементарно в firefox:
Ctrl+A -> клик правой кнопкой мыши -> просмотр исходного кода выделенного фрагмента.
Таким образам находишь остальные ссылки, то есть у тебя уже будет код всей страници.