|
|
|
| Решил использовать защиту от рекламы заменой url. Регулярное выражение взял из вашей книги "Самоучитель PHP5". $url = preg_replace("#^(http://)?[-a-z0-9_\.]+([-a-z0-9_]+\.(html|php|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*'%$]+)?$#i", "http://site.ru", $url); Всё прекрасно работает, но проблема в том, что если написать одно слово на латинице(например test), оно также будет заменено на http://site.ru. Скажите, пожалуйста, как этого избежать? | |
|
|
|
|
|
|
|
для: Guest11
(16.09.2006 в 19:26)
| | А test всмысле, т.е. регулярное выражение срабатывает на любое английкое слово в сообщении? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 21:01)
| | Да, любое английское слово оно заменяет на http://site.ru. Но если в сообщении будет 2 или больше слов, например test test или test Тест, Тогда всё нормально. Т.е. оно срабатывает, если в сообщении находится одно единственное слово и оно на латинице. | |
|
|
|
|
|
|
|
для: Guest11
(16.09.2006 в 21:15)
| | А что должно делать это рег. выражение? По-моему оно писалось не для того, для чего вы хотите его использовать ...
test - подходить под выражение, по-этому и заменяется
test test - нет, потому что между словами стоит пробел (который в рег. выражении не разрешен). Если к слову test добавить еще, какой-нибудь не разрешенный символ (напр. test^), то замена также не произойдет | |
|
|
|
|
|
|
|
для: kasmanaft
(17.09.2006 в 14:21)
| | Я знаю, что писалось оно не для этого, но т.к. сам я не в силах написать, решил воспользоваться этим. Это выражение проверяет правильность ввода url. Тогда подскажите, какое регулярное выражение надо использовать для замены любого url, начинающегося с http:// на http://site.ru . | |
|
|
|
|
|
|
|
для: Guest11
(17.09.2006 в 18:40)
| | немного модернизировал, получилось так:
<?
$text = 'Вот мой супер сайт - http://super-site.org, зайдите обязательно.
И еще один тоже супер сайт super-site.com';
// $text = 'test';
// $text = 'test.info';
// $text = 'test.info/index.php?id=55';
$text = preg_replace ("#(http://)?[-a-zA-Z0-9_\.]+\.[\w]{2,4}\/([-a-z0-9_]+\.(html|php|pl|cgi))?([-a-z0-9_:@&\?=+\.!/~*'%$]+)?#is", 'http://site.ru', $text);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(18.09.2006 в 00:22)
| | Что-то не работает, в смысле, не заменяет. Так и выводит: http://super-site.org Может быть, вы допустили небольшую ошибку? | |
|
|
|
|
|
|
|
для: Guest11
(18.09.2006 в 07:41)
| | Да, в торопях не туда " \ / " вставил ... :(
***[\w]{2,4}(\/[-a-z0-9_]+\.(html|php|pl|cgi))*****
|
(оказывается все гораздо сложнее, чем я думал ... есть глюки в этом выражении ... сейчас нету времени, позже постараюсь улучшить, если сложным оно кажется не только мне и меня не опередят :) ) | |
|
|
|
|
|
|
|
для: kasmanaft
(18.09.2006 в 09:58)
| | Большое спасибо! Оно и так прекрасно работает. | |
|
|
|