Отделяне на домейните от списък с линкове

От: Отделяне на домейните от списък с линкове

Лупаш домейните в първата колона на ексела, а във втората слагаш следната формула:

=CONCATENATE("http://", MID(A1, SEARCH("//", A1)+2, SEARCH("/", MID(A1, SEARCH("//", A1)+2, 1000))))
 
От: Отделяне на домейните от списък с линкове

Пействаш в Ексел:
1. Data -> Text to columns
2. избери delimited ->next
3. избираш Other и за знак в кутийката слагаш "/"
4. next-Finish
и в колона C са ти се наредили домейните
 
От: Отделяне на домейните от списък с линкове

Ето ти го в php вариант :
PHP:
<?php
header ('Content-type: text/html; charset=utf-8');
if ($_POST) {
      $list = $_POST[links];
      $explode_type[1] = "\r\n"; 
      $explode_type[2] = "\n\r";
      $explode_type[3] = "\n"; 
      $explode_type[4] = "\r"; 
      foreach ($explode_type as $src_explode) {
          $to_explode = stripos($list, $src_explode);
          if ($to_explode) { 
            $newList = explode($src_explode, $list);
            break;
          }      
      }
    if ( is_array($newList) )  
        foreach ($newList as $site) {
           $Address = str_replace('http://', '', $site);
           $Address = "http://".$Address;  
           $parseUrl = @parse_url(trim($Address));
           $result .= "$parseUrl[scheme]://$parseUrl[host]\r\n";       
            
          }
        } 
      
      $form = "<form method='POST' action=''>
      <p>Моля въведете линковете</p>
      <textarea rows='10' cols='60' name='links'>$_POST[links]</textarea><br />
      <p>Резултат</p>
      <textarea rows='10' cols='60'>$result</textarea><br />
      <p><input type='submit' value='Давай !'/></p>
      </form>
      ";

echo $form;
?>
 
От: Отделяне на домейните от списък с линкове

Този ексел е голяма работа :D

и php варианта върши страхотна работа.

Благодаря на всички!
 
От: Отделяне на домейните от списък с линкове

Ако ще е PHP по добре да се ползва preg_match или preg_match_all, така отсяването ще е за всякакви протоколи: ftp, http, httpS, ...
 
От: Отделяне на домейните от списък с линкове

Дал съм пример само с един протокол защото линкове с други нямам.
скрипта върши тази работа, благодаря на cybervn.
 
От: Отделяне на домейните от списък с линкове

Просто казвам :)
Това може да е в ползва и на други.
 
От: Отделяне на домейните от списък с линкове

primecode е прав. Ето го и варианта с други протоколи, който не е с preg_match.

PHP:
<?php
header ('Content-type: text/html; charset=utf-8');
if ($_POST) {
      $list = $_POST[links];
      $explode_type[1] = "\r\n"; 
      $explode_type[2] = "\n\r";
      $explode_type[3] = "\n"; 
      $explode_type[4] = "\r"; 
      foreach ($explode_type as $src_explode) {
          $to_explode = stripos($list, $src_explode);
          if ($to_explode) { 
            $newList = explode($src_explode, $list);
            break;
          }      
      }
    if ( is_array($newList) )  
        foreach ($newList as $site) {
          $site = urldecode(mb_strtolower($site)); 

            if (stripos($site, '://') === false || stripos($site, '://') > 6 ) $site = 'http://'.$site;  
            $parseUrl = @parse_url(trim($site));
            
            if ($parseUrl)
                $return .= "$parseUrl[scheme]://$parseUrl[host]\r\n";
             else
                $ugly .= "\t$site\r\n";       
          }
        if ($ugly) {
            $return .= "\r\n\tНе се справихме с : \r\n$ugly";
        }

        $result = "
          <p>Резултат</p>
          <textarea rows='10' cols='60'>$return</textarea><br />";
        
        }        
      $form = "
      <form method='POST' action=''>
      <p>Моля въведете линковете</p>
      <textarea rows='10' cols='60' name='links'>$_POST[links]</textarea><br />
      $result
      <p><input type='submit' value='Давай !'/></p>
      </form>
      ";

echo $form;
?>
 
Последно редактирано:
От: Отделяне на домейните от списък с линкове

И това в вариант макар, че могат и в него да се посочат недостатъци. Това няма значение в случая, постарал си се :)
Реп от мен :)

EDIT:
@cybervn, ще си запиша за репутацията да ти я дам по-късно, че в момента не мога.
 
От: Отделяне на домейните от списък с линкове

Мерси ! Слушам за недостатъците, като ще е гарга да е рошава : )

P.S. направих малка корекция ...
 
От: Отделяне на домейните от списък с линкове

Коригирах го това с
PHP:
          $site = urldecode(mb_strtolower($site)); 

            if (stripos($site, '://') === false || stripos($site, '://') > 6 ) $site = 'http://'.$site;
 
От: Отделяне на домейните от списък с линкове

Начини има много, а и всичко зависи от това до колко на теб ще ти върши работа и колко добре действа, дали бави и т.н.
Все пак за мен си остават като по-удачни други варианти :)
 
От: Отделяне на домейните от списък с линкове

О това е пределно ясно, въпроса беше при дадените условия да не се чупи нещо някъде или ако се чупи да е в някакви крайни случаи, като t.co/:// примерно : )
 
От: Отделяне на домейните от списък с линкове

здравейте,
отново имам нужда от помощ :oops:

направих един списък в ексела - 400 реда
трябва да номерирам всеки един от тях...
четох в нета, че за разлика от word-a в ексела няма така опция (за автоматично номериране...)
може да стане с импорт на БД от access-a но ми се струва твърде сложно...

та се сетих за друг начин: чрез php скрипт да се генерират 400 числа като се започне от 1 и после да ги paste в колонката за номериране? :D

Мерси предварително
 
От: Отделяне на домейните от списък с линкове

Няма нужда да усложняваш със скриптове :) Има си функция, елементарна, Fill series

Пишеш в първата клетка 1 (или от колкото искаш да почва номерацията), в следващата -следващото число.
Маркираш двете клетки, хващаш плюса в долния десен ъгъл на маркираното и дръпваш надолу. Това е
 
От: Отделяне на домейните от списък с линкове

както го правя аз се копира цифрата в клетката...
 
От: Отделяне на домейните от списък с линкове

Трябва да маркираш и двете клетки, за да се зададе някаква последователност
 

Горе