2011-09-03 121 views
3

我的网站有2个数据库表。其中1人有posts_table,另一人有视频。查找并替换问题

目前我正在获取文本图像等,通常从post_table表。 在我的CMS当我们添加一个视频有补短代码

[media id=487 width=660 height=440] 

这简码全自动获得从vid_table视频的链接,该ID是一样的短码。

所以我想的是:

  • 我需要做的是短代码做同样的事情,当视频上CMS添加的短代码显示在后,我需要删除简码,而不是它想要播放的视频在vid_table上有链接。

我的英语有些问题,所以如果你不明白请告诉我。

任何形式的帮助都会很棒。

谢谢。

编辑:所以我想用flash播放器替换整个媒体标签,播放属于ID在媒体标签

BUMP的网址!可以帮忙吗?

+1

关于该链接和表格业务:而不是仅仅描述它,有一个例子可以帮助。否则,很好的问题! +1 – phihag

+0

因为我看到没有人写任何类型的问题,很难做到这一点? – Meo

+1

我在理解问题到底有什么困难。您已经发布了将媒体标签更改为html元素的实现。你想为所有匹配模式'[object ...]的标签创建一个通用解析器,并根据标签的参数呈现html元素吗? E.g'[link id = 123]'将被替换为'...' – gilden

回答

1

这是一个相当复杂的问题真正得到媒体ID出来的文字。我很无聊,做了一个基本的标签解析器。现在它有一些问题:

  • HTML渲染应该实现在一个分离的类(和模板引擎,如Twig应该做渲染);
  • 标签解析太过天真,如果标签的语法不正确,可能会给您带来意想不到的结果;
  • [media]标记不支持IE。你将不得不更改源本身(方法TagParser::renderMedia()

一些特征需要注意:

  • 额外的参数将呈现为[link]标记属性,e.g [link id=25 class=foo]将输出<a href="example.com" class="foo">example</a>。如果你说出来了
  • 参数可能包含空格:[link id=25 class="foo bar"]将输出<a href="example.com" class="foo bar">example</a>
  • 如果DataProvider::findById()它的数组中不返回'content',解析器会输出<a href="http://example.com">http://example.com</a>

代码太长,贴在这里,你可以在gist找到它。只需将每个文件放在第一条注释行指定的目录中,即可设置。运行example.php以查看它的行动。您可以通过查看单元测试来了解有关使用此脚本的更多详细信息。

+0

谢谢你,我会试试看 – Meo

1

你要什么?究竟可以使用

$text = 'some stuff [media id=468 width=660 height=440] more stuff'; 

preg_match("/media id=(.*) w/",$text, $results); 
$result = $results[0]; 
$result = str_replace("media id=","",$result); 

$result = str_replace("w","",$result); 

$id = $result; 
+0

我已更新我的问题,请阅读 – Meo

+1

他希望用flash播放器替换整个媒体标签,播放属于媒体标签中ID的网址。 – CodeCaster

+0

OMG YES !!!!!!!!!! – Meo