views.php
<a href="<?= URL::site(); ?>feeds/view/<?php echo $feed->feed_id; ?>">
<p class="feed-text" style="word-wrap:break-word;">
<?php if($feed_text = preg_replace('!(http|ftp|scp)(s)?:\/\/[a-zA-Z0-9.=?&_/]+!', "<a style=text-decoration:underline;color:blue href=\"\\0\" target='_blank' >\\0</a>",$feed->feed_text)):
echo nl2br($feed_text);
else:
echo nl2br($feed->feed_text); endif;?>
</p>
</a>
上面的视图代码用于显示文本和url。如果用户只发布文本,则else部分将起作用,如果用户发布文本时同时发布url,则第一个条件起作用。
如果用户发布文本,点击该文本将把用户带到另一个页面。这也适用于如果用户发布两个文本与你管网址也。点击这里的文字,应该会把他带到下一个屏幕。
问题是,如果用户将文本与YouTube url一起发布,并且文本之间存在YouTube url,则YouTube url之后的文本将丢失锚定标记。但是,如果文章在文本后(文本结束后)包含管状链接,则锚定标记工作正常。
问题示例:
十只小猴子在床上跳 . . . 被泰迪熊绊倒,http://www.youtube.com/watch?v=38hnsgqf8O0在香蕉皮上滑倒,从码头上摔下来!
“在香蕉皮上滑倒,从码头上掉下来!”锚定标签不工作。其他案件的其他工作罚款。
如何解决这个问题
尝试添加display:block定位标记的代码>样式:
<a style="display:block;" href="<?= URL::site(); ?>feeds/view/<?php echo $feed->feed_id; ?>">
它只在HTML5中是正确的(参见Can a
但是当用户在文本中添加网址时,就不能这样做了。一个<代码>
然而,有一个方法可以做到这一点。您可以通过插入网址分割文本,并在中包装每个部分
<p>
<a href="<?= URL::site(); ?>feeds/view/<?php echo $feed->feed_id; ?>">
text_part_1
</a>
<a href="http://www.youtube.com/watch?v=38hnsgqf8O0">http://www.youtube.com/watch?v=38hnsgqf8O0</a>
<a href="<?= URL::site(); ?>feeds/view/<?php echo $feed->feed_id; ?>">
text_part_2
</a>
</p>