【求解】字符串生成数组根据自定义规则输出 本帖最后由 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>优化的余地应该很大,自己弄弄吧 PHP使用MSSQL2005数据库的效率高吗?跟MYSQL比 关于商店商品买卖问题?(php+ajax) 高分求救,争,超奇怪的问题 为什么我指定了charset=gb2312,打开的页面默认编码方式还是西欧ISO?郁闷! 急问,这个提示的错误怎么解决!!! 问一SQL查询 php代码能转换能asp吗 mysql的类型区别(谁有相关的文章!我不懂什么时候用int 什么时候用bigint )!:) 登陆问题???——在线等! 请问:如何让IE解析php文件,具体该怎么配置php? 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>优化的余地应该很大,自己弄弄吧