【求解】字符串生成数组根据自定义规则输出 本帖最后由 yunxingfeng 于 2012-09-05 17:11:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 根据\n|#拆分百度#http://www.baidu.com/\n百度#http://www.baidu.com/\n得到的替换<a href='{1}'>{0}</a>,输出 $s = "百度#http://www.baidu.com/\n百度#http://www.baidu.com/\n";if (preg_match_all('/(.+)#(.+)/', $s, $matches, PREG_SET_ORDER)) { foreach($matches as $k => $v) { echo "<a href=\"$v[2]\">$v[1]</a>"; }} <a href=\"$v[2]\">$v[1]</a>这个字符串是作为参数的,格式不固定,要求能够根据“带大括号的数组索引”调用相应的元素如果这个字符串定义为<li>$v[1]<a href=\"$v[2]\">查看</a></li>那么就应该显示<li>百度<a href="http://www.baidu.com">查看</a></li><li>百度<a href="http://www.baidu.com">查看</a></li> 错了应该是定义为<li>{2}<a href="{1}">查看</a></li> 这样写split_array("百度#http://www.baidu.com/\n百度#http://www.baidu.com/\n","\n|#","<a href='{1}'>{0}</a>");function split_array($str, $pattern, $template) { $cnt = substr_count($template, '{'); //统计模板中替换位置的个数 $tmp = preg_split('/'.$pattern.'/', $str, -1, PREG_SPLIT_NO_EMPTY); //按规则切割数据 $m = count($tmp) % $cnt; if($m) $tmp = array_slice($tmp, 0, -$m); //除去多余的数据 $tmp = array_chunk($tmp, $cnt); //将数据分组 $r = array(); foreach($tmp as $m) { $t = $template; foreach($m as $i=>$v) { $t = str_replace("{{$i}}", $v, $t); } $r[] = $t; } echo join('<br>', $r);}<a href='http://www.baidu.com/'>百度</a><br><a href='http://www.baidu.com/'>百度</a>优化的余地应该很大,自己弄弄吧 本地测试网站 总跳转到web网站 是什么原因?? 关于导入excel乱码的问题? 关于session调用 , 请问为什么这样不行? 请问各大侠,如何在PHP中获取Input 的值! php,jsp如何获得用户输入的访问路径 关于session的页面 寻简单模板.... 求php-mysql教程!~!~!各位大虾帮帮忙,进者有分 php开发手机wap(wml),遇见的页面间传递变量棘手问题 为什么分页显示不正常? PHP调用快递API接口报错了 一些时间比较及转换的问题
if (preg_match_all('/(.+)#(.+)/', $s, $matches, PREG_SET_ORDER)) {
foreach($matches as $k => $v)
{
echo "<a href=\"$v[2]\">$v[1]</a>";
}
}
这个字符串是作为参数的,格式不固定,要求能够根据“带大括号的数组索引”调用相应的元素
如果这个字符串定义为
<li>$v[1]<a href=\"$v[2]\">查看</a></li>
那么就应该显示
<li>百度<a href="http://www.baidu.com">查看</a></li>
<li>百度<a href="http://www.baidu.com">查看</a></li>
<li>{2}<a href="{1}">查看</a></li>
$cnt = substr_count($template, '{'); //统计模板中替换位置的个数
$tmp = preg_split('/'.$pattern.'/', $str, -1, PREG_SPLIT_NO_EMPTY); //按规则切割数据
$m = count($tmp) % $cnt;
if($m) $tmp = array_slice($tmp, 0, -$m); //除去多余的数据
$tmp = array_chunk($tmp, $cnt); //将数据分组
$r = array();
foreach($tmp as $m) {
$t = $template;
foreach($m as $i=>$v) {
$t = str_replace("{{$i}}", $v, $t);
}
$r[] = $t;
}
echo join('<br>', $r);
}<a href='http://www.baidu.com/'>百度</a><br><a href='http://www.baidu.com/'>百度</a>优化的余地应该很大,自己弄弄吧