首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将XML转换为PHP变量,然后转换为Flashvars

将XML转换为PHP变量,然后转换为Flashvars
EN

Stack Overflow用户
提问于 2012-02-03 03:47:36
回答 2查看 593关注 0票数 0

是否可以使用php读取XML文件,然后将数据传递给Flashvars?

在搜索解决方案时,我只能找到如何将XML指向文件。目前,我正在打开XML文件,将其分配给一个PHP变量,对其进行调整,然后将其写入一个文件,然后由Flashvars拾取该文件。这在99%的情况下是有效的,但有时结果是完全错误的!以我目前的知识,我不能调试这个问题。

如果我能以字符串而不是文件的形式传递数据,那就容易多了。

这是我当前的PHP代码...

代码语言:javascript
复制
    <?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>

代码语言:javascript
复制
    <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>
EN

回答 2

Stack Overflow用户

发布于 2012-02-03 04:49:55

我不久前也做过类似的事情。希望能对你有所帮助。

代码语言:javascript
复制
 <?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存储在一个具有关联键的数组中。在此之后,您需要做的就是获取所需的参数,并将它们存储为flashvars的正确格式。

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

票数 0
EN

Stack Overflow用户

发布于 2012-02-03 07:00:35

下面是你要做的:

下载xml2array,在所有php / xml应用程序中都非常有用http://www.bin-co.com/php/scripts/xml2array/

把它包含在你的页面上。

然后使用以下几行:

代码语言:javascript
复制
$homepage = file_get_contents('content.xml');

$xml_array = xml2array($homepage);

你可以做一些你想做的事情:要么像你之前说的那样使用json_encode()把它变成一个字符串,你可以对数组进行分解(),然后在你的Javascript代码块中回显出来,或者像这样在页面上输出代码:

代码语言:javascript
复制
param.something = <?= $xml_array['my_key']; ?>;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9118920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档