是否可以使用php读取XML文件,然后将数据传递给Flashvars?
在搜索解决方案时,我只能找到如何将XML指向文件。目前,我正在打开XML文件,将其分配给一个PHP变量,对其进行调整,然后将其写入一个文件,然后由Flashvars获取。这99%的时间都有效,但有时结果是完全错误的!以我目前的知识,我无法调试这个问题。
如果我可以将数据作为字符串而不是文件传递,那会容易得多。
这是我当前的PHP代码。。。
<?php
$homepage = file_get_contents('content.xml');
// Search and replace text in $homepage
$myFile = "testFile.txt";
$ourFileHandle = fopen($myFile, 'w') or die("can't open file");
fwrite($ourFileHandle, '');
fwrite($ourFileHandle, $homepage);
fclose($ourFileHandle);
?>
<script type="text/javascript" src="swfobject/swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
flashvars.pathToXML = "testFile.txt";
var params = {wmode: "transparent"};
var attributes = {};
swfobject.embedSWF("flashfile.swf", "myAlternativeContent", "660", "120", "9.0.0", false, flashvars, params, attributes);
</script>
这是我的XML。。。
<root>
<config>
<columns>6</columns>
<padding>8</padding>
<horizontal_align>true</horizontal_align>
<vertical_align>true</vertical_align>
<scale>0.7</scale>
</config>
<loop>
<title>6th (bottom)</title>
<path>sounds/string6</path>
<key>name6</key>
<volume>0.6</volume>
<panning>0</panning>
<offset>0</offset>
</loop>
<loop>
<title>5th</title>
<path>sounds/string5</path>
<key>name5</key>
<volume>0.6</volume>
<panning>0</panning>
<offset>0</offset>
</loop>
<loop>
<title>4th</title>
<path>sounds/string4</path>
<key>name4</key>
<volume>0.6</volume>
<panning>0</panning>
<offset>0</offset>
</loop>
<loop>
<title>3rd</title>
<path>sounds/string3</path>
<key>name3</key>
<volume>0.6</volume>
<panning>0</panning>
<offset>0</offset>
</loop>
<loop>
<title>2nd</title>
<path>sounds/string2</path>
<key>name2</key>
<volume>0.6</volume>
<panning>0</panning>
<offset>0</offset>
</loop>
<loop>
<title>1st (top)</title>
<path>sounds/string1</path>
<key>name1</key>
<volume>0.6</volume>
<panning>0</panning>
<offset>0</offset>
</loop>
</root>
我不久前也做了类似的事情。希望它能帮助你。
<?php
function extractXML($url){
$doc = new DOMDocument();
$doc->load($url);
$arrFeeds = array();
foreach ($doc->getElementsByTagName('loop') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'path' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'key' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'volume' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'panning' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'offset' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
);
array_push($arrFeeds, $itemRSS);
}
return $arrFeeds;
}
$tabXmlData = extractXML("YOURLINK");
for($i = 0; $i < (int)$feedAmount; $i++){
if(isset($tabXmlData[$i])){
$flashVars .= "INSERT WHAT NEEDED";
}
}
?>
<script type="text/javascript" src="swfobject/swfobject.js"></script>
<script type="text/javascript">
var flashvars = {<?php echo $flashVars ?>};
flashvars.pathToXML = "testFile.txt";
var params = {wmode: "transparent"};
var attributes = {};
swfobject.embedSWF("flashfile.swf", "myAlternativeContent", "660", "120", "9.0.0", false, flashvars, params, attributes);
</script>
澄清:该函数基本上将XML存储在具有关联键的数组中。在那之后,你所需要做的就是获取你想要的params,并将它们以flashvars的正确格式存储。
PS:如果需要替换字符串值,请检查str_replace()
或preg_replace()
以下是您的操作:
下载xml2array,在所有php/xml应用程序中都很有用http://www.bin-co.com/php/scripts/xml2array/
将其包含在您的页面中。
然后使用以下行:
$homepage = file_get_contents('content.xml');
$xml_array = xml2array($homepage);
如果你想做的话,你可以做一些事情:要么像你说的那样使用explode()使它成为一个字符串,你可以json_encode()数组,然后在你的Javascript块中回显它,或者只在页面上输出代码,如下所示:
param.something = <?= $xml_array['my_key']; ?>;