Regex для замены FLV PLayer в PHP для CKEditor - PullRequest
0 голосов
/ 30 августа 2010

Итак, у меня есть следующий 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 и т. Д. В редактор WYSIWYG.Проблема в том, чтобы играть в FLV, вам нужен FLV Player.Мы используем Flowplayer прямо сейчас, но чтобы использовать его, нам нужно заменить код FLV CKEditors по умолчанию.Вместо того, чтобы взламывать CKEditor, мы хотели бы заменить код, поскольку он рендерится на стороне php прямо перед его отправкой пользователю.

Если у кого-то есть знания CKEditor или более простое решение, пожалуйста, не стесняйтесь бросать ихтам:)

Ответы [ 2 ]

2 голосов
/ 31 августа 2010

Не используйте регулярные выражения. Используйте DOM-парсер, такой как PHP , встроенный в него.

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

foreach ($allElements as $element)
 // ... do something with each `object` tag  ...
0 голосов
/ 30 августа 2010

Это было бы очень простым, но работающим регулярным выражением:

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

редактировать: За комментарий ниже:

/<param\s+name="movie"\s+value="([^"]+.flv)"/i
...