Есть строки:
/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/
/
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости