我有一段UTF-8编码的HTML,我需要从中获取一个文件引用,然后我需要使用所述文件引用完全更改它。
这是起始代码:
<object width="250" height="20" data="player.swf" type="application/x-shockwave-flash">
<param name="data" value="player.swf" />
<param name="flashvars" value="file=TEST.MP3" />
<param name="src" value="player.swf" />
</object>
如您所见,它是一个包含对文件和Flash播放器的引用的对象标记。
这是我需要的代码:
<p><a href="TEST.MP3">TEST.MP3</a></p>
我尝试首先获取文件引用,然后完全用a标签替换对象部分,但这只是替换所有对象标记而不仅仅是我需要的对象标记。
最简单的方法就是“仅仅取代”&#39;带有标签的对象标签,但我不知道如何使用正则表达式来查找和替换所有关于&#39;你需要的文件。
最好的方法是什么?
答案 0 :(得分:1)
如果您知道周围的代码在以后的所有情况下都是相同的,并且只有TEST.MP3更改,您可以使用我测试的以下RegEx:
<?php
header('Content-type: text/plain');
$test = '<object width="250" height="20" data="player.swf" type="application/x-shockwave-flash">
<param name="data" value="player.swf" />
<param name="flashvars" value="file=TEST.MP3" />
<param name="src" value="player.swf" />
</object>';
echo preg_replace('/^\<object.*\n.*\n.*file\=(.*)\".*\n.*\n.*/mi','<a href="$1">$1</a>',$test);
?>
这适用于PHP 5.3.10。