XML到PHP变量,然后再到Flashvars

XML到PHP变量,然后再到Flashvars,php,xml,flashvars,Php,Xml,Flashvars,是否可以使用php读取XML文件,然后将数据传递给Flashvars 在搜索解决方案时,我只能找到如何将XML指向文件。目前,我正在打开XML文件,将其分配给一个PHP变量,对其进行调整,然后将其写入一个文件,然后由Flashvars拾取该文件。这在99%的情况下有效,但有时结果是完全错误的!以我目前的知识,我无法调试这个问题 如果我可以将数据作为字符串而不是文件传递,那就容易多了 这是我当前的PHP代码 <?php $homepage = file_get_content

是否可以使用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>

var flashvars={};
flashvars.pathToXML=“testFile.txt”;
var params={wmode:“透明”};
var属性={};
嵌入swf(“flashfile.swf”、“myAlternativeContent”、“660”、“120”、“9.0.0”、false、flashvars、params、attributes);
这是我的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>

6.
8.
符合事实的
符合事实的
0.7
第六(底部)
声音/弦乐6
名字6
0.6
0
0
第五
声音/弦乐5
名字5
0.6
0
0
第四
声音/弦乐4
名字4
0.6
0
0
第三
声音/弦乐3
名字3
0.6
0
0
第二
声音/弦乐2
姓名2
0.6
0
0
第一(顶部)
声音/弦乐1
名称1
0.6
0
0

我不久前做了类似的事情。希望它能帮助你

 <?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>

var flashvars={};
flashvars.pathToXML=“testFile.txt”;
var params={wmode:“透明”};
var属性={};
嵌入swf(“flashfile.swf”、“myAlternativeContent”、“660”、“120”、“9.0.0”、false、flashvars、params、attributes);
澄清: 该函数基本上是将XML存储在带有关联键的数组中。之后,您需要做的就是获取所需的参数,并将其存储为FlashVar的正确格式

PS:如果需要替换字符串值,请检查
str_replace()
preg_replace()

以下操作:

下载xml2array,在所有php/xml应用程序中都非常有用

将其包含在您的页面上

然后使用以下行:

$homepage = file_get_contents('content.xml');

$xml_array = xml2array($homepage);
如果您愿意,您可以做几件事:或者使用explode()将其变成您说过的字符串,您可以对数组进行json_encode()编码,然后在Javascript块中回显,或者在页面上输出代码,如下所示:

param.something = <?= $xml_array['my_key']; ?>;
param.something=;

将其保存到文件中有什么原因吗?为什么不直接用PHP或JavaScript将数据分配给FlashVar?我这样做的唯一原因是因为这是我知道的唯一方法。我如何将PHP变量中的XML数据保存到FlashVar中而不保存到文件中?那么,是学习新方法的好时机了!您只需向您创建的flashvars对象添加值如何
var flashvars={somethingImportant:“我需要传递给我的flash的一些重要字符串!”,另一个var:“我的flash还有更多数据”}这样我就可以把XML放在那里用于flash??还是需要将XML分解为单独的变量?我现在就把我的XML贴到这个问题上。哇,非常感谢!虽然我对你写的“插入所需内容”有点困惑;我想搜索并替换整个XML文件,以替换string6到1和name6到1。那是我搜索和替换的地方吗?现在我完全糊涂了。这可能是我无法理解的。我知道如何使用str_replace(),但我不知道如何在该函数中使用它来替换12个Sting。如果我使用的是
var flashvars={}是否需要
flashvars.pathToXML=“testFile.txt”