假设用户能够选择一些目录进行搜索。他勾选以下目录:
http://google.com/apple
http://google.com/apple/red
http://google.com/apple/green
http://google.com/apple/yellow
http://google.com/orange
http://google.com/orange/1
准备好在数据库中插入这些数据时。有没有办法,所以我可以通过PHP简化列表,以显示如下所示:
http://google.com/apple
http://google.com/orange
由于 赛勒斯
答案 0 :(得分:1)
这应该可以解决问题:
sort( $paths );
$previous = $paths[0];
$simplified = array( $previous );
foreach ( $paths as $path ) {
if ( $previous != substr( $path, 0, strlen( $previous ) ) ) {
$simplified[] = $previous = $path;
}
}
此代码依赖于字符串在其自身的任何扩展之前排序的事实。请注意,它不会以任何特殊方式处理斜杠,因此它会认为"quux/foo"
是"quux/foobar"
的有效前缀(这并不像我原先想象的那样容易修复这将是)。如果您不想这样做,请确保您的路径在适当的位置有斜杠。