PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (8): « 1 2 3 4 5 6 7 [8]

> Найдено сообщений: 111
isle Отправлено: 13 Января, 2010 - 17:14:41 • Тема: Помогите написать регулярку • Форум: Регулярные выражения

Ответов: 43
Просмотров: 3010
apakc пишет:
Не работает
apakc пишет:
Не работает


Должна, регулярку вам правильно дал, уверен в этом... Сам их уже почти с сотню для своего чекера наклепал, очень длинных и сложных - все работают. Может, вы опять чего-то недоговорили, как в прошлый раз ? Улыбка П.С. Я с ерегами пока не работал еще, их не знаю, если честно, а вот преги знаю уже хорошо, попробуйте с ними... у меня все путем работает ;)

Цитата:
можно ли с помощью регулярного выражения...


Можно. Можно выкинуть, например, все цифры, все англ. буквы, только определенные цифры или только заглавные буквы и т.д.

Вообще, все посторонние символы можно удалить из любой строки. В примере выше можно очистить вашу строку было бы от мусора, например, символов "-", что было бы правильней, а также все запятые поменять на точки. Для этого есть замечательная штука - прег_реплейс, я сначала им обрабатываю строку, а потом вытаскиваю то, что мне нужно, так проще и быстрее, но удобство появляется только если строка чертовски сложная и длинная. Попробуйте... Примерно это выглядит так:

вытаскиваем нашу строку из сайта и обрабатываем:

PHP:
скопировать код в буфер обмена
  1. // Наше выражение, которое нужно обработать
  2. $html = file_get_contents($url);
  3.  
  4. // Задаем массив левых символов, которые нужно удалить.
  5. $del = array('-','--');
  6. $html = str_replace($del,'',$html);
  7.  
  8. // Можно удалить один символ или одну последовательность символов так...
  9. // Это работает быстрей и не грузит сервер в отличие от preg_replace.
  10. $html = str_replace(' ',' ',$html);
  11.  
  12. // Меняем все запятые на точки
  13. $html = str_replace(',','.',$html);
  14.  
  15. // Удаляем только цифры из строки:
  16. $del = array('0','1','2','3','4','5','6','7','8','9');
  17. $html = str_replace($del,'',$html);


Дальше уже, думаю, всё понятно из логики Улыбка Если не получилось что-то, то дайте конкретные несколько примеров... Должно всё работать.
isle Отправлено: 11 Января, 2010 - 22:02:26 • Тема: Помогите написать регулярку • Форум: Регулярные выражения

Ответов: 43
Просмотров: 3010
Ну, текст совсем другой Улыбка Тогда попробуйте такую регулярку:

$del = "[\s*-?\s*-?\d-?\s*-?\d?-?\s*-?\d?-?\s*-?\s*]";

'|(?:'.$del.'(?:\.|,)'.$del.'(?:\.|,)'.$del.'(?:\.|,)'.$del.'(?:\.|,)\s*)|s','-',$text


Под ваш пример, должна заработать по идее. Но, может, чего гуру и другие форумчане еще подскажут.

П.С. М... скопировал и не посмотрел, нужно так:
вместо \d{0-3} написать \d{0,3} - так правильно...
isle Отправлено: 11 Января, 2010 - 21:31:57 • Тема: Помогите написать регулярку • Форум: Регулярные выражения

Ответов: 43
Просмотров: 3010
Я уже чуток поднатаскался за пару недель, могу предложить свой вариант, надеюсь, поможет:

'|(?:\d{0-3}\s*(\.|,)\s*\d{0-3}\s*(\.|,)\s*\d{0-3}\s*(\.|,)\s*\d{0-3}\s*(\.|,)\s*)|s','-',$text
isle Отправлено: 25 Октября, 2009 - 10:15:09 • Тема: Помогите написать регулярку • Форум: Регулярные выражения

Ответов: 43
Просмотров: 3010
Здорово! Спасибо огромное По пиву! Работает!

Сам бы неделю сидел разбирал все эти пхп-теги (функции)... жалко на такую мелочь столько времени тратить на незнакомые еще мне коды Улыбка

Итак, привожу полный вариант для тех, кто также хочет сделать вывод топ-комментаторов блога, но не знает, как это сделать красиво.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   $urlArr = parse_url(str_replace('://www.','://',$url)); // Разбиваем url на компоненты, удаляем www
  3.   $path = explode('/',$urlArr['path']); // Разбиваем путь на компоненты
  4.   $host = $urlArr['host']; // Домен
  5.   $blogDir = $path[1]; // Папка блога
  6.   if ($blogDir != '') $url2 = $host.'/'.$path[1];
  7.   else $url2 = $host;
  8. ?>


В нужное место втыкаем Вот так всё прекрасно работает. Улыбка Еще раз спасибо ;)
isle Отправлено: 25 Октября, 2009 - 08:41:28 • Тема: Помогите написать регулярку • Форум: Регулярные выражения

Ответов: 43
Просмотров: 3010
Ch_chov пишет:
Зачем тут регулярки?
parse_url, pathinfo, basename, dirname


Посмотрел все, но так и не понял, как их применить ??? Не похоже на то, что они нужны... Недовольство, огорчение А регулярка худо-бедно, да работает Улыбка Можете конкретный пример привести, если не сложно? Я сам сейчас едва ли смогу наклепать, пхп только начинаю изучать.
isle Отправлено: 25 Октября, 2009 - 06:28:37 • Тема: Помогите написать регулярку • Форум: Регулярные выражения

Ответов: 43
Просмотров: 3010
Товарищи-программисты, у меня почти аналогичный случай, хочу вытащить из переменной адрес, но никак не выходит, если не сложно, помогите, пожалуйста, нигде загуглить не выходит.

есть переменная, допустим $url, которая может содержать, например, такой адрес:

_http://www[dot]subdomaim[dot]domaim[dot]com/blog/oleg/index.php

Я хочу получить только домен и, если есть, то папку блога, но без лишних символов. Например, должно получиться как-то так (без "http://", "www", третьей вложенной папки и всяких слешей):

subdomaim.domaim.com/blog

К сожалению, пример 3 (http://www.php.su/functions/?preg-match) работает, но не обрезает левые "www.@ и почему-то срезает вложенную папку блога.

Был бы очень благодарен за вашу подсказку. Улыбка

================================ ===

Обновление:

Методом проб и ошибок получил такое:

preg_match("/^(http:\/\/)?(www.)?([^\/]+)/i",$url,$matches);
$url2 = $matches[3];

Однако, проблему с вложенной папкой решить пока не выходит. Недовольство, огорчение

Страниц (8): « 1 2 3 4 5 6 7 [8]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB