Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2016, 19:04   #1
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию Сравнение строк

Друзья, привет!
Бьюсь целый день! Никак не могу сделать сравнение строк...
К примеру задаю массив ссылок, и нужно чтобы скрипт выдал уникальные похожие части...
Ну например, есть массив со строками:

Код:
site.ru/category/notebook
site.ru/category/asus
site.ru/category/dlink

site.ru/tags/asus
site.ru/tags/dlink/
site.ru/tags/notebook

site.ru/page
В результате должно получиться...
Код:
site.ru/
site.ru/category/
site.ru/tags/
site.ru/page/
Думал перебирать каждый символ в строках, но кажется это не правильно )

Последний раз редактировалось record222; 02.02.2016 в 19:22.
record222 вне форума Ответить с цитированием
Старый 02.02.2016, 21:56   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от record222 Посмотреть сообщение
уникальные похожие части...
Это прекрасно, ящитаю
Andkorol вне форума Ответить с цитированием
Старый 03.02.2016, 00:55   #3
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Это прекрасно, ящитаю
Спасибо, за помощь!
record222 вне форума Ответить с цитированием
Старый 03.02.2016, 04:31   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Вот так можно, но у этой конструкции есть ограничения. Но работает !


PHP код:

// Массив "грязных" повторных ссылок

$URLS = [
    
"site.ru/category/notebook",
    
"site.ru/category/notebook",
    
"site.ru/category/notebook",
    
"site.ru/category/asus",
    
"site.ru/category/asus",
    
"site.ru/category/dlink",
    
"site.ru/category/dlink",
    
"site.ru/category/dlink",
    
"site.ru/tags/asus",
    
"site.ru/tags/asus",
    
"site.ru/tags/dlink/",
    
"site.ru/tags/dlink/",
    
"site.ru/tags/notebook",
    
"site.ru/tags/notebook",
    
"site.ru/page",
    
"site.ru/news/12",
    
"site.ru/news/12",
    
"site.ru/news/12",
    
"site.ru/news/999",
    
"site.ru/news/999",
    
"site.ru/news/999",
    
"site.ru/news/A-Z",
    
"site.ru/news/A-Z",
    
"site.ru/news/0-9",
    
"site.ru/news/0-9"
];


echo 
"--------------------------------------------------------------\n";
echo 
"Raw\n";

$RES = [];

foreach (
$URLS as $v) {

    
$tmp explode("/"$v);
    
$out "";

    for(
$i=0$i count($tmp); $i++){

        
$out .= $tmp[$i]."/";

    }        

    
$out substr($out0count($out)-2);
    echo 
"> ".$out."\n";

    
$RES$out ] = "";

}

echo 
"--------------------------------------------------------------\n";
echo 
"Clean\n";

foreach (
$RES as $key => $value) {

    echo 
$key."\n";

}

// Clean
// site.ru/category/notebook
// site.ru/category/asus
// site.ru/category/dlink
// site.ru/tags/asus
// site.ru/tags/dlink/
// site.ru/tags/notebook
// site.ru/page
// site.ru/news/12
// site.ru/news/999
// site.ru/news/A-Z
// site.ru/news/0-9 
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 03.02.2016, 08:17   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

а может тогда - http://php.net/manual/ru/function.array-unique.php и не городить огород?
ADSoft вне форума Ответить с цитированием
Старый 03.02.2016, 08:33   #6
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
а может тогда - http://php.net/manual/ru/function.array-unique.php и не городить огород?
о


Логично!
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 03.02.2016, 13:01   #7
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

Сделал решение. До универсала правда далеко, но работает.
PHP код:
$e "/";
$links = array();
$result = array();
sort($links);
$num count($links);
for(
$i=0$i $num$i++) { 
   if(isset(
$links[$i]) && isset($links[$i+1])) { 
            
$b explode($e $links[$i]);
            
$b1 explode($e$links[$i+1]);
         
        
$c array_intersect($b$b1);
        
$result[] = implode($e$c);
        } 
}
$result array_filter(array_unique($result));

echo 
implode("\n"$result); 
record222 вне форума Ответить с цитированием
Старый 03.02.2016, 15:05   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

еще бы знать что решает данное решение... ибо как кроме того что показать уникальные строки по сути больше никто и не догадался чего вы хотите
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строк Evacuator Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2013 22:25
сравнение строк и исключение повторов в пределах 4 строк Dariloff Microsoft Office Excel 2 20.01.2013 23:33
сравнение строк геннадий522 Общие вопросы C/C++ 2 12.01.2012 15:32
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце Shpr0T Microsoft Office Excel 8 30.08.2010 17:52
Сравнение строк Rivendell Microsoft Office Excel 8 18.12.2009 10:29