drsc10888 2016-10-08 01:00
浏览 71
已采纳

文件名中的PHP变量

I did a quick Google search and didn't find anything on this so I'm not entirely sure if this is even possible.

Let's say I have a file with the name of img_type-grayscale_title-waterfall. Is it possible to use parts of the file name as variables?

Like: type-grayscale becoming in a php script $type = "grayscale" and title-waterfall becoming $title = "Waterfall".

Basically I'd like to store variables and values in a filename and extract them if possible.

I know I could use a database for this, but I have reasons for explicitly wanting to try something like this.

Ok so my mind completly drew a blank and I didn't even think about the fact that the file name is nothing more than a string.

With some reminders from some comments I remembered this small detail and came up with the following which works, but doesn't seem to be the best way to do so:

Code:

$data = "img_type-grayscale_title-waterfall";
list($fileType,$type, $title) = explode("_",$data);

list($type, $typeValue) = explode("-", $type);
list($title, $titleValue) = explode("-", $title);

echo "Type: " . $typeValue;
echo " ";
echo "Title: " . $titleValue;

Output:

Type: grayscale Title: waterfall

It just seems a bit excessive to have to add a new line like list($title, $titleValue) = explode("-", $title); for each variable.

  • 写回答

3条回答 默认 最新

  • doudou130216 2016-10-08 01:23
    关注

    I think I would do so with an associative array.

    <?php
    
    
    $filename = 'img_type-grayscale_title-waterfall';
    $result = Array();
    
    //let's parse the filename with _ as first level separator and - for second level
    
    $firstlevel = explode ('_', $filename);
    foreach ($firstlevel as $secondlevels) {
            $keyvalue = explode ('-', $secondlevels);
            //first the special case of the "img" first token which is the file type and has no value
            if (!isset($keyvalue[1])) { // there is for it a key but no value
                $result['filetype']=$keyvalue[0];
            }
            else {
                $result[$keyvalue[0]]=$keyvalue[1];
            }
    
    }
    
    echo $result['filetype']; //  "img"
    echo ' ; ';
    echo $result['type']; // "grayscale"
    echo ' ; ';
    echo $result['title']; // "waterfall"
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题