Я хотел бы найти общий шаблон между двумя URL в PHP.
Я играл с https://gist.github.com/chrisbloom7/1021218 но это останавливается на этапе нахождения самого длинного соответствия, не учитывающего подстановочные знаки, которые существуют в URL.
например вот 2 URL
Если я запускаю функцию над ними, мой общий шаблон
http://example.com/collections/
Что я ищу
http://example.com/collections/*/products/
Кто-нибудь знает, как я могу адаптировать код, чтобы он работал, или есть лучший способ?
Вместо регулярных выражений, разделите URL-адреса на /
затем сравните каждый элемент массива, затем составьте URL:
$url1 = 'http://example.com/collections/dresses/products/foo/dress.html';
$url2 = 'http://example.com/collections/shoes/products/shoe.html';
$part1 = explode('/', $url1);
$part2 = explode('/', $url2);
$common = array();
$len = count($part1);
if (count($part2) < $len) $len = count($part2);
for ($i = 0; $i < $len-1; $i++) {
if ($part1[$i] == $part2[$i]) {
$common[] = $part1[$i];
} else {
$common[] = '*';
}
}
$out = implode('/', $common);
echo "$out\n";
Выход:
http://example.com/collections/*/products
Других решений пока нет …