按元素过滤 XML [重复]

2024-01-04

<?php
$files = glob( 'docs/*.xml' );
if ( isset( $_GET['doctype'] ) == "all" ) {
    foreach ( $files as $file ) {
        $xml = new SimpleXMLElement( $file, 0, true );
        echo'
                <tr>
                <td id="'. $xml->doctype .'" name="'. $xml->doctype .'" class="mainTable">' . $xml->doctype . '</td>
                <td><a href="viewdoc.php?docname=' . basename( $file, '.xml' ) . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename( $file, '.xml' ) . '</a></td>
                <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
                <td>'. $xml->date .'</td>
                <td>* * * * *</td>
                <td>'. filesize( $file ) .'kb</td>
                </tr>
                ';
    }
}
else if ( isset( $_GET['doctype'] ) == "doc" ) {
        foreach ( $files as $file ) {
            $xml = new SimpleXMLElement( $file, 0, true );
            // code filter the $xml->doctype by equal it to currect value - which i'm not sure how to do.
            echo'
                     <tr>
                     <td id="'. $xml->doctype .'" name="'. $xml->doctype .'" class="mainTable">' . $xml->doctype . '</td>
                     <td><a href="viewdoc.php?docname=' . basename( $file, '.xml' ) . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename( $file, '.xml' ) . '</a></td>
                     <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
                     <td>'. $xml->date .'</td>
                     <td>* * * * *</td>
                     <td>'. filesize( $file ) .'kb</td>
                    </tr>
               ';
        }
    }
?>

我有几个<a>标签(相同的链接,home.php),每个标签都有不同的 $_GET 链接(home.php?doctype=doc、home.php?doctype=all 等等。)。 现在我希望使用 if 语句过滤每个文档类型并检查$_GET['doctype']如果他等于我的值(假设该值是word、excel、powerpoint等..)。

我的问题是:假设我等于 $xml->doctype 等于我的值之一,如何过滤 doctype?


我会为此使用位掩码:http://php.net/manual/en/language.operators.bitwise.php http://php.net/manual/en/language.operators.bitwise.php

<?php

// define your types and groups:
$listedTypes["TYPE_MSWORD"]             = 1;
$listedTypes["TYPE_MSEXCEL"]            = 2;
$listedTypes["TYPE_MSPOWERPOINT"]       = 4;
$listedTypes["TYPE_OFFICE"]             = $listedTypes["TYPE_MSWORD"] + $listedTypes["TYPE_MSEXCEL"] + $listedTypes["TYPE_MSPOWERPOINT"];

$listedTypes["TYPE_HTML"]               = 8;
$listedTypes["TYPE_SVG"]                = 16;
$listedTypes["TYPE_W3C"]                = $listedTypes["TYPE_HTML"] + $listedTypes["TYPE_SVG"];

$listedTypes["TYPE_ALL"]                = $listedTypes["TYPE_OFFICE"] + $listedTypes["TYPE_W3C"];


// try to open the page.php?doctype=TYPE_MSWORD
// or page.php?doctype=TYPE_ALL
if(!isset($_GET['doctype']))                        $_GET['doctype'] = "TYPE_ALL";
if(!isset($listedTypes[$_GET['doctype']]))          $_GET['doctype'] = "TYPE_ALL";
$requestedType = $listedTypes[$_GET['doctype']];



foreach ( $files as $file )
{
    $xml = new SimpleXMLElement( $file, 0, true );

    if($xml->doctype == "......")               $fileType = $listedTypes["TYPE_MSWORD"];
    elseif($xml->doctype == ".........")        $fileType = $listedTypes["TYPE_MSEXCEL"];
    elseif($xml->doctype == ".........")        $fileType = $listedTypes["TYPE_MSPOWERPOINT"];
    //... continue

    // then check if the $type matches the $selection of $_GET['doctype']
    // if the filetype is in the requested file type group, it will be shown
    if($fileType & $requestedType)
    {
        echo'
        <tr>
        <td id="'. $xml->doctype .'" name="'. $xml->doctype .'" class="mainTable">' . $xml->doctype . '</td>
        <td><a href="viewdoc.php?docname=' . basename( $file, '.xml' ) . '&username='. $xml->startedby .'&myname='. $_SESSION['username'] .'">' . basename( $file, '.xml' ) . '</a></td>
        <td><a href="viewprofile.php?name='. $xml->startedby .'">'. $xml->startedby .'</a></td>
        <td>'. $xml->date .'</td>
        <td>* * * * *</td>
        <td>'. filesize( $file ) .'kb</td>
        </tr>
        ';
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按元素过滤 XML [重复] 的相关文章

  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • Facebook API 注销我的应用程序,但不注销 Facebook

    如何使用 Facebook 的 api 进行注销 让我退出我的应用程序 网站 但保持登录 facebook com 的状态 这让我登录正常 window fbAsyncInit function FB init appId status t
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和
  • Php 会话标头已经发送错误[重复]

    这个问题在这里已经有答案了 可能的重复 php 标头已发送错误 https stackoverflow com questions 3319207 php headers already sent error 我已附上我的代码 该代码用于
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in
  • Apache“无法初始化模块”,因为更改 PHP 配置后模块和 PHP 的 API 不匹配

    php v 给出了这个 PHP Warning PHP Startup memcache Unable to initialize module Module compiled with module API 20060613 PHP co
  • Doctrine 不会在 MySQL 中生成跨数据库外键约束

    我有两个表 db1 Contact 和 db2 Recipient 每个收件人都应该是联系人 因此我在 db1 Contact ContactID 字段上的两个表之间设置了外键 我在 Recipient php 中使用以下注释表示这一点 O
  • 简单 php 脚本找不到对象错误

    每次我点击提交按钮在网页中处理此代码时 它都会转到 未找到对象 404 错误 页面 它发生在我的一些脚本中 我不知道问题的根源是我的本地主机 Xampp 还是我的代码 if isset POST submit require dbc php
  • 防止重复数据输入mysql数据库

    我试图让我的电子邮件订阅服务拒绝数据库中已存在的电子邮件 这样用户就不会订阅同一封电子邮件两次 这就是我所拥有的 但它不起作用 有什么想法吗
  • 如何获取共同好友列表

    你好 我想知道如何才能找到共同的朋友 我目前在思考这个问题时遇到问题 我有一个名为 users 的表 它是这样的 id name 1 Kenny 2 Jack 3 Jimmy 4 Chris 5 Meg 6 Jake 7 Micheal 8
  • 如何区分两个同名的多选列表

    对于我正在构建的系统 我需要查看第一个列表中出现了哪些选项 通过 POST 请求 以及第二个列表中出现了哪些选项
  • WooCommerce:检查商品是否已在购物车中

    我从中发现了这个很棒的片段website https joebuckle me quickie woocommerce check if item already in cart 以下是检查购物车中是否存在特定产品的函数 function
  • 如何在按钮上执行mysql [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions PHP 单击按钮时如何执行 SQL
  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • 在脚本中使用未定义常量

    我搜索了该网站并看到了对用户应该在变量周围加上单引号的问题的修复 但我仍然有点困惑 错误 全部参考第28行 注意 使用未定义的常量 log id 假定为 log id 注意 使用未定义的常量 log username 假定为 log use
  • PHP7.1上读取会话数据失败

    分享一个我遇到的问题 现已解决 在我的开发机器上 我使用 PHP 运行 IIS 我升级到 PHP7 突然我的代码不再工作 返回此错误 session start 读取会话数据失败 用户 路径 C WINDOWS temp 看起来像是权限问题
  • 显示带有 id 的内部连接的名称[重复]

    这个问题在这里已经有答案了 我有这个查询 select from countrysegments inner join country on countrysegments country id country id inner join
  • 我可以在 php 中的 SESSION 数组上使用 array_push 吗?

    我有一个想要在多个页面上使用的数组 因此我将其设为 SESSION 数组 我想添加一系列名称 然后在另一个页面上 我希望能够使用 foreach 循环来回显该数组中的所有名称 这是会议 SESSION names 我想使用 array pu
  • CodeIgniter加入选择为

    我的数据库中有 2 个表需要加入 一张表是 artikelen 表 另一张表是 Collections 表 我目前有 this gt db gt select this gt db gt from collecties this gt db

随机推荐