0

所以我有以下 HTML 代码:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="movie" value="/uploads/flash/test1.flv" /><embed pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="/uploads/flash/test1.flv" type="application/x-shockwave-flash"></embed></object>

我要做的是提取参数名称电影的值,即全部剥离并仅保留“uploads/flash/test1.flv”(无引号)。HTML 将存储在 var 中。变量中可能有多个对象。我需要用新的对象类型替换它们。

对于这个问题的上下文,我们正在使用 CK 编辑器,它允许将 flsah 文件等上传到所见即所得的编辑器中。问题是播放 FLV 你需要一个 FLV 播放器。我们现在使用 Flowplayer,但要使用它,我们需要替换 CKEditors 默认的 FLV 代码。我们不想在 CKEditor 上破解代码,而是在将代码发送给用户之前替换它在 php 端呈现的代码。

如果有人有 CKEditor 知识或更简单的解决方案,请随时将它们扔在那里:)

4

2 回答 2

2

不要使用正则表达式。使用像 PHP内置的 DOM 解析器。

$dom = new DOMDocument;
$dom->loadHTML(your HTML code here);
$allElements = $dom->getElementsByTagName('object');

foreach ($allElements as $element)
 // ... do something with each `object` tag  ...
于 2010-08-31T13:50:05.160 回答
0

这将是一个非常基本但有效的正则表达式:

/src="([^"]+.flv)"/i

编辑:根据以下评论:

/<param\s+name="movie"\s+value="([^"]+.flv)"/i
于 2010-08-30T18:32:20.157 回答