1

Тема: Допомога з регуляркою

Люди привіт. Мені потрібна допомога з регексом.

ось для прикладу є список url адрес:

http://mysite1.com/index.php?key=values,dkfjg hsfdj glskfjgls kjfhgslkfdj hsfg slkjdfg
http://mysite2.com/dir/index.php?key=value?;g sdfs'lg ;gnh;s lkf;skj g;sdfkg s;dfkg
http://mysite3.com/index.php?key=values/dl n;gk'dgfh d;ghlkfg; jfd hgslkngsl f
http://mysite4.com/index.php?key=values;lkdjf ;skfdjg ;skfdj g;sofdjg;sokfjdg;skjfdg
http://mysite5.com/index.php?key=values;lkdjf ;slkdfjg sdfjg ;lskjdg; lskjdfg;lksjdfg
http://mysite6.com/index.php?key=value;kdfj ;slkdfjg ;slkfjdg ;slkjfdg;lskjfg

В усіх в них присутній index.php?key=value. Ось що я намудрував

^[a-z]{4,5}:\D{2}[a-z0-9._-]+\/

і результатом цього всього буде:

http://mysite1.com/
http://mysite2.com/
http://mysite3.com/
http://mysite4.com/
http://mysite5.com/
http://mysite6.com/

Але на деяких адресех є ще внутрішня папка, як на mysite2.com/dir/index.php, тому мій варіант незавжди підходить.

Питання! Як регуляркою обрізати все до index.php? шоб результатом 2-го рядка був mysite2.com/dir/.

Подякували: 0xDADA11C7, ostap34PHP2

2

Re: Допомога з регуляркою

Стопудово має бути якийсь готовий інструмент в ядрі або готова бібліотека.

Гугл:

how to get domain name with protocol php

Хоча це ж php)

3 Востаннє редагувалося Monolith (18.07.2017 16:37:42)

Re: Допомога з регуляркою

Гм...Якщо не помиляюся, це все можна зробити одним викликом $_SERVER[] (php.net/manual/en/reserved.variables.server.php). Але от назву атрибуту забув...

Тобто регулярка тут не потрібна.

4

Re: Допомога з регуляркою

Хлопці і дівчата уважно ще раз читаємо тему і саме питання. Там конкретно написано, що треба регулярка, якщоб питання стояло просто в допомозі з отриманням певного результату, то так це супер варіант. Мені саме потрібна регулярка.

Маєм site.com/index.php................................................ треба отрізати все і index.php включно. З мого питання видно, що я це своєю регуляркою зробив, але бувають такі варінати, як site.com/web/index.php і в такому випадку моя регулярка обріже папку web/index.php, а мені потрібно щоб вона залишила її. Так як ще раз повторюсь деякі адреса мають додаткову папку.

5

Re: Допомога з регуляркою

^.+index

питання вирішено.

Подякували: 0xDADA11C7, koala2

6 Востаннє редагувалося NaharD (18.07.2017 17:08:18)

Re: Допомога з регуляркою

Можна ж ось так зробити

/^(.*)\index.php/

а потім за допомогою групи номер 1 ($1) витягнути результат.

Так само в преґмач, тоді в $output_array[1] буде потрібний результат

preg_match("/^(.*)\index.php/m", $input_line, $output_array);
$output_array = array(2
    0    =>    http://mysite1.com/index.php       // увесь рядок, що підходить під регулярку
    1    =>    http://mysite1.com/                // далі будуть йти групи. і це наша єдина група, що була задана круглими дужками.
)
Подякували: Monolith, ostap34PHP, leofun013