Javascript 使用preg_replace时锚定标签不起作用
views.phpJavascript 使用preg_replace时锚定标签不起作用,javascript,php,kohana,kohana-3,Javascript,Php,Kohana,Kohana 3,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 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>
”,$feed->feed_text)):
echo nl2br($feed_text);
其他:
echo nl2br($feed->feed_text);endif;?>
上面的视图代码是显示文本和url。如果用户只发布文本,则else部分将起作用,如果用户发布文本以及您的url,则第一个条件起作用
如果用户发布文本,单击该文本会将用户带到另一个页面。如果用户也使用YouTube url发布这两个文本,这也适用。单击文本时,应将用户带到下一个屏幕
问题是,如果用户在you tube url之后发布文本,并且you tube url位于文本之间,则you tube url之后的文本将丢失锚定标记。但是,如果帖子在文本之后(文本结束之后)包含you tube链接,则锚定标记将正常工作
问题示例:
十只小猴子在床上跳…被泰迪熊绊倒,在香蕉皮上滑倒,从码头上摔下来
“在香蕉皮上滑倒,从码头上摔下来!“锚定标签不起作用。其余的箱子工作正常
如何解决此问题尝试将
display:block;
样式添加到锚定标记:
<a style="display:block;" href="<?= URL::site(); ?>feeds/view/<?php echo $feed->feed_id; ?>">
)
但是,如果用户在文本中添加url,那么就不能这样做
<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>