dede softlinks php循环匹配问题

发布于 2021-11-27 15:19:30 字数 1208 浏览 924 评论 6

---------已知 [field:softlinks/]标签可调出如下数据:

{dede:link text='网址名1'} http://网址1 {/dede:link}
{dede:link text='网址名2'} http://网址2 {/dede:link} 
...
{dede:link text='网址名n'} http://网址n {/dede:link}

------------想要显示的内容:

<a href="http://网址1" title="网址名1"><img src="http://网址1.png" width="18" height="18" alt="网址名1"></a>
<a href="http://网址2" title="网址名2"><img src="http://网址2.png" width="18" height="18" alt="网址名2"></a>
...
<a href="http://网址n" title="网址名n"><img src="http://网址n.png" width="18" height="18" alt="网址名n"></a>
-----------参考代码 

[field:softlinks runphp='yes']

$link = array_filter(explode('{/dede:link}',@me ),"filter"); 
$len = count( $link );
for( $i=0;$i< $len-1;$i++ )
{
 $tpattern="/{dede:link text='(.*)'}/i";
 $ppattern="/'}(.*)/i";
 preg_match_all($tpattern,$link[$i],$title); 
 preg_match_all($ppattern,$link[$i],$path); 
 echo '<a href='.$path[1][0].' >'.$title[1][0].'</a>';
}
function filter($var) 
 { 
   if($var == '' || $var ==' ') 
   { 
    return false; 
   } 
   return true; 
 }
[/field:softlinks]

---------这个写的有问题 怎么修改



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

哑剧 2021-11-28 04:04:52

问题已解决  谢谢大家

[field:softlinks runphp='yes']
preg_match_all('/='(.+?)'} (.+?) {/sim', @me, $strResult, PREG_PATTERN_ORDER);
$aaa=array();
for($p=0;$p<count($strResult[0]);$p++){
$aaa[]='<a class=tooltip href='.$strResult[2][$p].' title='.$strResult[1][$p].'><img src='.$strResult[2][$p].'.png width=18 height=18 alt='.$strResult[1][$p].'></a>';
}
$aaa=implode('',$aaa);
@me=$aaa;
[/field:softlinks]

青萝楚歌 2021-11-28 04:04:46
想尽量在一个 [field:softlink php处理中 调出结果 里边应该用到 循环匹配 一次调用的 网址 网址名数据 并插入到要实现的格式中

我稍微改了下
[field:softlinks runphp='yes']
preg_match_all('/='(.+?)'} (.+?) {/sim', @me, $strResult, PREG_PATTERN_ORDER);
$a=$strResult[1][0]; 
$b=$strResult[2][0]; 
@me= '<a class=tooltip href='.$b.' title='.$a.'><img src='.$b.'.png width=18 height=18 alt='.$a.'></a>' ;
[/field:softlinks]

不过这是第 0条数据 要取 {/dede:link}数据出现的次数 然后 i++循环下 这个不会写

固定的写法 但这样 循环次数就固定成4组了 
[field:softlinks runphp='yes']
preg_match_all('/='(.+?)'} (.+?) {/sim', @me, $strResult, PREG_PATTERN_ORDER);
@me= '
<a class=tooltip href='.$strResult[2][0].' title='.$strResult[1][0].'><img src='.$strResult[2][0].'.png width=18 height=18 alt='.$strResult[1][0].'></a>
<a class=tooltip href='.$strResult[2][1].' title='.$strResult[1][1].'><img src='.$strResult[2][1].'.png width=18 height=18 alt='.$strResult[1][1].'></a>
<a class=tooltip href='.$strResult[2][2].' title='.$strResult[1][2].'><img src='.$strResult[2][2].'.png width=18 height=18 alt='.$strResult[1][2].'></a>
<a class=tooltip href='.$strResult[2][3].' title='.$strResult[1][3].'><img src='.$strResult[2][3].'.png width=18 height=18 alt='.$strResult[1][3].'></a>

' ;
[/field:softlinks]

归属感 2021-11-28 04:04:15

这个是article内容页 利用关键词 dede:SQL调用相关文章 并列出相关文章的softlinks

第一个红框是测试[field:softlinks /]调出的内容需要 修改 

第二个红框是单列出正确的内容 只会逐个调用出来 比较麻烦

第三个红框是想最终实现的效果

长安忆 2021-11-28 03:49:45

我补充了下想要的效果

蓝颜夕 2021-11-28 00:19:00

国庆节快乐

无声静候 2021-11-27 22:36:56

1: img标签还要显示吗?你到底要显示哪样?
""echo '<a href='.$path[1][0].' >'.$title[1][0].'</a>'

这感觉就是普通的名字加链接如果是这样的话, 那你的代码真要好好精简了;
1: 非常明显的对应标签, 实在没必要分组切割.
2: (.*) 正则应用时切记, 一定要加修饰U. 否则后果很严重. 这也是为什么你前面要切割的原因.
3: 国庆节快乐, 除香港.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文