【发布时间】:2013-04-26 14:30:47
【问题描述】:
我有一些 html 菜单,最大宽度为 990px。现在我想从一个数组中打印这个菜单,并将这些菜单列表(<li>)放在一行中。删除填充空间或每个菜单列表,为了节省计算,如何将 foreach 中的总单词限制在 200 个字符内?我没有好主意,在我的代码中,将数组分组为字符串然后切割字符串长度,这不是一个好主意。
$a = array("item1","item2","item3" ... "item30");//'item' would be change to any other words.
foreach($a as $b){
$c.=$b.'|';
}
function limitString($string, $limit = 200) {
if(strlen($string) < $limit) {return $string;}
$regex = "/(.{1,$limit})\b/";
preg_match($regex, $string, $matches);
return $matches[1];
}
$d = explode('|',limitString($c));
foreach($d as $e){
echo '<li><a href="">'.$e.'</li>';
}
例如item20中的第200个字符,在item19中应该被打断,在这个foreach中输出19个菜单列表。
【问题讨论】:
-
既然可以
substr(),为什么还要使用正则表达式?你不需要火箭筒,唾液球也可以。 -
@Marc B,所以这不是一个好主意,有什么简单的方法吗?
-
用 substr 吸出 200 个字符,然后从字符串的末尾向后扫描到第一个分隔符,切掉末尾的悬空位,最终得到一个非拆分子字符串。
-
你想平等地限制每个单词吗?或者您想在达到 200 个字符时删除其余菜单?
-
@HamZa DzCyberDeV,当我达到 200 个字符时删除其余菜单