我目前正在构建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>»';
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;
}
?>