Есть строки:
/home/i/p/S/var/DR/IN/m/1;/home/i/p/DIRS/var/DR/IN/D/1;/home/i/p/S/var/DR/IN/m/4;
/home/i/p/SU/var/DR/I/s/1;/home/i/p/SU/var/DR/I/s/3;/home/i/p/SU/var/DR/I/s/5;
Нужно найти строки у которых общий корень — общая директория и оставить только общий корень (из 1 строки оставить только /home/i/p/S/var/DR/IN/m
из 2 сроки оставить только /home/i/p/SU/var/DR/I/s
и т.д. со всеми строками). При этом некоторые директории могут этот общий корень не иметь.
Сравнивать все строки через preg_match
мне кажется как-то не эффективно. Может есть более красивое решение?
Mожет функциями explode
и implode
решить вопрос, разделить строки на знак /
, потом сново собрать?
$str = '/home/i/p/SU/var/DR/I/s/1';
$tmp_arr = explode('/',$str);
unset($tmp_arr[count($tmp_arr)-1]); убираем последний элемент массива.
$str = implode('/',$tmp_arr);
Попробуйте развить
// делим строку по точке с запятой
$stringMain = "/home/i/p/S/var/DR/IN/m/1;/home/i/p/S/var/DR/IN/m/2;/home/i/p/S/var/DR/IN/m/4;";
$piecesMain = explode(";", $stringMain);
$compare = []; //создаем пустой массив для сравнения
for ($i = 0; $i < count($piecesMain[0]); $i++)
{ //создаем массив сначала из первого элемента массива
$pieces0 = explode("/", $piecesMain[0]);
for ($k = 0; $k < count($pieces0); $k++)
{
// echo $pieces0[$k]."\n";
$compare[] = $pieces0[$k]; //заполняем его
}
}
for ($z = 1; $z < count($piecesMain); $z++)
{ //перебираем остальные элементы главного массива кроме первого
$piecesZ = explode("/", $piecesMain[$z]);
$result_array = array_intersect_assoc($compare, $piecesZ); //сравниваем их с первым элементом, выводим расхождение
// echo $result_array."\n";
for ($y = 0; $y < count($result_array); $y++)
{
echo $result_array[$y] . "/";//собираем каждый элемент главной строки (после сравнения)
}
echo "\n";
}
на выходе
/home/i/p/S/var/DR/IN/m/
/home/i/p/S/var/DR/IN/m/
/
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго времени! Хочу спросить совета по поводу хранения данных в redis как это сделать быстрее и оптимальней в плане кода и быстродействия...
Данный код рисует сетку календаря, календарь рисуется на месяцВыбираются все данные за этот месяц (если есть такие) и при наличии данных в базе...
В общем пишу api для граббинга m3u8, есть функция которая отдает ссылку на файл, ссылка в таком виде