找到并替换问题

时间:2011-09-03 14:47:52

标签: php replace

我的网站,有2个数据库表。其中1人拥有posts_table,另一人拥有视频。

目前我正在获取文本图像等,通常来自post_table表。 在我的CMS中,当我们添加视频时,会添加一个简短的代码

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

此短代码自动获取vid_table视频的链接,其中id与短代码相同。

所以我想要的是:

  • 我需要做一些短代码做的事情,当在CMS上添加视频时,短信显示在帖子中,我需要删除短代码,而不是想要播放的视频vid_table上的链接。

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

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

谢谢。

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

BUMP !!可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您想要什么?,您可以使用

从文本中获取媒体ID
$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;

答案 1 :(得分:1)

实际上这是一个非常复杂的问题。我很无聊,并成为一个基本的标签解析器。现在它有一些问题:

  • HTML渲染应该在一个单独的类中实现(而像Twig这样的模板引擎应该进行渲染);
  • 标记解析过于天真,如果标记的语法不正确,可能会给您带来意想不到的结果;
  • [media]标记不支持IE。您必须更改源本身(方法TagParser::renderMedia()

需要注意的一些功能:

  • 额外参数将呈现为[link]标记的属性,例如[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以查看其实际效果。您可以通过查看单元测试找到有关使用此脚本的更多详细信息。