php - BBcode解析问题

标签 php

我正在构建我自己的论坛,您可以在其中使用不同类型的 BBcode,其中之一是 [youtube][/youtube] 来嵌入 youtube 视频,

这个想法是让它变得简单,用户可以像这样输入完整的 url 或只是视频的代码

[youtube]http://www.youtube.com/watch?v=AJ3_kndmeCg[/youtube]
[youtube]http://www.youtube.com/watch?v=AJ3_kndmeCg&feature=related[/youtube] [youtube]AJ3_kndmeCg[/youtube]

这是我的代码,它从一个完整的 url 中获取代码,

<?php
$getpost=$_POST['post'];  
$getpost=preg_replace("'\[youtube\].*?=(.*?)&.*?\[/youtube\]'is",'yt link is \\1',$getpost);  
$getpost=preg_replace("'\[youtube\].*?=(.*?)\[/youtube\]'is",'yt link is \\1',$getpost);  
$getpost=preg_replace("'\[youtube\](.*?)\[/youtube\]'is",'yt link is \\1',$getpost);  
?>

结果是:

yt link is AJ3_kndmeCg
yt link is AJ3_kndmeCg
yt link is AJ3_kndmeCg

如果我只想嵌入 3 个 youtube 视频,它会完美运行,

但是如果我想像这样嵌入 6 个 youtube 视频:

[youtube]http://www.youtube.com/watch?v=AJ3_kndmeCg[/youtube] [youtube]http://www.youtube.com/watch?v=AJ3_kndmeCg&feature=related[/youtube] [youtube]AJ3_kndmeCg[/youtube]
[youtube]http://www.youtube.com/watch?v=AJ3_kndmeCg[/youtube] [youtube]http://www.youtube.com/watch?v=AJ3_kndmeCg&feature=related[/youtube] [youtube]AJ3_kndmeCg[/youtube]

结果是:

yt link is AJ3_kndmeCg
yt link is AJ3_kndmeCg[/youtube]
yt link is AJ3_kndmeCg
yt link is http://www.youtube.com/watch?v=AJ3_kndmeCg
[youtube]AJ3_kndmeCg

你看到了吗^^标签仍然保留在两行中,其中一行显示了完整的 URL,

最佳答案

我宁愿使用现有的 BBCode 解析库,如 http://www.christian-seiler.de/projekte/php/bbcode/index_en.html它还允许您定义自己的 bb 标签,并将它们转换为您想要的 HTML。

;)

关于php - BBcode解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3517357/

相关文章:

php - 造型 echo 错误

php - 按国家/地区获取 Twitter 主题标签

php - 无法通过 php 连接到数据库

javascript - 确定 ajax 调用已完成以运行另一个 ajax 调用

php - 如何在多维数组php中推送键值对

php - Doctrine 2 具体表继承与关联

php - 数据库中标签系统的实现

php - 写入模式下 fopen 的文件权限 - PHP

php - 通过 Codeigniter 更新数据库中的条目并且未获取以前的值

javascript - 用于二进制 JSON(或类似格式)的可移植 PHP/Javascript 插件?