Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярка 
V
    Опции темы
MoLeX
  Дата 23.3.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Привет.
У меня очень слабые знания в регулярках, поэтому прошу помощи  smile 

есть массив
Код

$data['array'] = array('news', 'faq', 'la-la-la');


есть входные данные
  • page-2/p_page-2-3/p_p_page-2-3-2/news/2009-03-14/page_N/id_N.html

на выходе мне надо получить
Код

page-2/p_page-2-3/p_p_page-2-3-2



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
zibox86
Дата 23.3.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 11.12.2007

Репутация: нет
Всего: 1



Именно с этим примером можно определить позицию первого вхождения "/news" и обрезать от начала до этой позиции.

Или входящие данные будут отличными от данного примера?
PM MAIL WWW   Вверх
Zmiuko
Дата 23.3.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



а если просто прогнать по функции:
Код

function string($str) {
     $str = explode('/',$str);
     $str = $str['0'].'/'.$str['1'].'/'.$str['2'];
     return $str;
}

$string = string('page-2/p_page-2-3/p_p_page-2-3-2/news/2009-03-14/page_N/id_N.html');


Добавлено через 2 минуты и 12 секунд
Может я неправильно понял, что требуется?  smile 
PM MAIL WWW ICQ Skype Jabber   Вверх
MoLeX
Дата 23.3.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(zibox86 @  23.3.2009,  13:36 Найти цитируемый пост)
Или входящие данные будут отличными от данного примера? 

аха. в том то и дело что будут.

Добавлено через 17 секунд
Цитата(Zmiuko @  23.3.2009,  13:43 Найти цитируемый пост)
Может я неправильно понял, что требуется? 

см. выше)

Добавлено через 1 минуту и 34 секунды
т.е. ссылки могут быть такими
  • page-2/p_page-2-3/p_p_page-2-3-2/news/2009-03-14/page_N/id_N.html
  • page-2/p_page-2-3/asdas/p_p_page-2-3-2/news/2009-03-14/page_N/id_N.html
  • page-2/p_page-2-3/asdas/p_p_page-2-3-2/sdf/asd/4254/news/2009/03/page_N/id_N.html
и т.д.

Добавлено через 3 минуты и 28 секунд
пока я делаю так:
1. разбиваю url  с помощью explode
2. сравниваю с массивом $data


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Zmiuko
  Дата 23.3.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Аналогичный вопрос в одном из прошлых топиков был и у меня, мне необходимо было превратить ссылки:

?mod=new&mc=mod&cm=to&page=12, допустим. 

В такие:

?file=mod-mc-cm-page-pr-new-mod-to-122.pl , без зависимости от названия переменных.

Не решил проблему. 

Точнее написал следущее:

Код

function re_prav_url($u) {
            $str = substr($u, 1);
            $str2 = explode('&', $str);
                for($i=0;$i<count($str2);$i++) {
                    list($a0, $a1) = explode('=', $str2[$i]);
                    $aa[] = $a0;
                    $ab[] = $a1;
                }
            $str = '?file='.implode('-',$aa).'-pr-'.implode('-',$ab).'2.pl';
            return $str;
        }


Но функция через-чур громоздкая и неудобная вышла :(

Добавлено через 2 минуты и 9 секунд
Массив данных был почти аналогичным.

Добавлено через 3 минуты и 2 секунды
Но приходилось дергать массив, подставлять конечной строкой в урл, а урл потом редактировать. До большего я не додумался. :(

Это сообщение отредактировал(а) Zmiuko - 23.3.2009, 14:02
PM MAIL WWW ICQ Skype Jabber   Вверх
enof
Дата 23.3.2009, 14:28 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Код

<?php
$data['array'] = array('news', 'faq', 'la-la-la');
$str = "page-2/p_page-2-3/p_p_page-2-3-2/faq/2009-03-14/page_N/id_N.html";
$pattern = "#(.*)/(?:".implode("|", $data['array']).")#iu";
preg_match($pattern, $str, $out);
echo $out[1];
?>

PM MAIL ICQ Skype   Вверх
MoLeX
Дата 23.3.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



enof, дружище то что надо.
держи +1 заслуженный


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1022 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.