【问题标题】:Create value with specific parts of a text file使用文本文件的特定部分创造价值
【发布时间】:2012-12-08 18:22:16
【问题描述】:

好的,我正在开发一个平面文件的喊话框,我正在尝试实现一种从平面文件中获取用户名并将其设为变量的方法,以便我可以使用它来调用数据库以检查用户是否是管理员,因此他们可以直接从留言框中删除/禁止用户。

这是平面文件中的示例行

<div><i><div class='date'>12/08/2012 18:56 pm&nbsp;&nbsp;</div></i> <div class='groupAdmin'><b>Admin</b></div><b><a href='javascript:;' onclick="shout_insert('@kira423- ')">kira423</a>:</b> hiya :D</div>

所以我想在这种情况下使用kira423 的用户名并创建一个变量,例如$shoutname 并使其等于kira423

我尝试了谷歌搜索并在此处四处查看,但无法找到答案,所以我希望我能在此处通过我自己的问题获得一些关于如何做到这一点的见解。

谢谢,

基拉

【问题讨论】:

    标签: php variables flat-file


    【解决方案1】:

    您应该使用preg_match 来完成这样的任务:

    preg_match_all('|<div class=\'date\'>(?P<date>.*?)&nbsp;.*<a.*>(?P<user>.*)</a>|i', $data, $matches);
    var_dump($matches);
    

    遍历所有数组元素

    foreach ($matches['user'] as $key => $user) {
        var_dump($user);
    }
    

    【讨论】:

    • 我从你上面的例子中得到了这条线。确保它正好是一行。
    • 好的,如果有多行不同的用户名,那么这行不通?
    • 正则表达式仅适用于单行。如果有帮助,您可以添加 g 修饰符或使用 preg_match_all,但我建议您逐行阅读您的平面文件。
    • 我不太擅长这种类型的事情,因为我不做那么多文件,但是我如何使用你的方法来创建我需要的变量来进行数据库查询调用,如果它只是要返回一个用户名而不是所有用户名,preg_match_all 将不起作用,因为它将它们全部返回到 1 个数组中,所以我可以用它们的数组键将它们单独列出
    • 您应该能够通过简单的 foreach 遍历所有用户名?我不明白问题可能出在哪里。最终我误解了你的问题。
    【解决方案2】:

    我认为您应该将平面文件中的每一行解析为 HTML(使用了简单的 HTML 标签),就像在PHP Parse HTML code 中描述的那样(或在谷歌中输入“php parse HTML”)。然后您可以从数组或其他任何地方访问用户名(kira123)。

    PS HTML 不是存储要显示的消息的最佳方式。甚至 CSV 似乎也更好——它会是“kira123;date;some text”——它更容易阅读和访问每个部分。显示时,使用标准装饰器模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多