php中面包屑的正则表达式


regex for breadcrumb in php

我目前正在构建breadcrumb。例如

http://localhost/researchportal/proposal/

    <?php
            $url_comp = explode('/',substr($url,1,-1));
            $end = count($url_comp);        
            print_r($url_comp);
            foreach($url_comp as $breadcrumb) {                     
            $landing="http://localhost/";
            $surl .= $breadcrumb.'/';                               
                if(--$end)
                 echo '
                 <a href='.$landing.''.$surl.'>'.$breadcrumb.'</a>&raquo;';
                else
                 echo '
                 <a href='.$landing.''.$surl.' class="active">'.$breadcrumb.'</a>';
                };?>

但是当我输入http://localhost////researchportal////proposal//////////

所有的格式都消失了,因为它混淆了我的代码。

我需要在一个像([1]->researchportal, [2]->proposal)数组站点路径不管我放了多少个斜杠

那么$url_comp = explode('/',substr($url,1,-1));可以变成一个正则表达式来得到我想要的输出吗?

不需要正则表达式。查看PHP手册中的htmlentities()和stripslashes()。一个正则表达式将返回一个布尔值,不管它说什么,并不能真正帮助你实现你想要做的事情。正则表达式能让你做的就是如果字符串匹配正则表达式做一些事情。如果您输入的正则表达式要求每个斜杠之间至少有2个字符,那么任何时候任何人在其中插入多个连续斜杠时,If语句将停止。

http://ca3.php.net/manual/en/function.stripslashes.php

http://ca3.php.net/manual/en/function.htmlentities.php

在php手册中找到。

它使用简单的str_replace语句,修改它应该达到你的帖子所要求的。

    <?
    function stripslashes2($string) {
        $string = str_replace("'''"", "'"", $string);
        $string = str_replace("'''", "'", $string);
        $string = str_replace("''''", "''", $string);
        return $string;
    }
    ?>