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条)

报告相同问题?

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改