我做了一个快速的谷歌搜索,没有找到任何关于此的内容,所以我不确定这是否可行。
假设我有一个名为img_type-grayscale_title-waterfall
的文件。
是否可以将文件名的一部分用作变量?
像:
type-grayscale
成为php脚本$type = "grayscale"
而title-waterfall
成为$title = "Waterfall"
。
基本上我想将变量和值存储在文件名中,并在可能的情况下提取它们。
我知道我可以使用数据库,但我有理由明确想要尝试这样的事情。
好的,所以我的脑子里总是画了一个空白,我甚至没想到文件名只不过是一个字符串。
通过一些评论中的一些提醒,我记得这个小细节,并提出了以下哪些有效,但似乎不是最好的方法:
代码:
$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;
输出:
Type: grayscale Title: waterfall
为每个变量添加list($title, $titleValue) = explode("-", $title);
之类的新行似乎有些过分。
答案 0 :(得分:1)
我想我会使用关联数组。
<?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"
?>
答案 1 :(得分:-2)
您可以尝试:
function get_parts( $delimiters, $string ){
return explode( chr( 1 ), str_replace( $delimiters, chr( 1 ), $string ) );
}
$string = 'img_type-grayscale_title-waterfall';
$parts = get_parts( array('-', '_', '-' ), $string );
然后你会得到一个包含分裂部分的数组。
Array (
[0] => img
[1] => type
[2] => grayscale
[3] => title
[4] => waterfall
);
$first = '$'.$parts[1].' = '.$parts['2'];
$second = '$'.$parts[3].' = '.$parts['4'];
结果是:
echo $first will print $type = grayscale
echo $second will print $title = whaterfall
答案 2 :(得分:-4)
$filename = 'img_type-grayscale_title-waterfall';
$items = explode('_', $filename);
$vars = explode('-', $items[1]);
$name = $vars[0];
$$name = $vars[1];
echo $type;
$vars1 = explode('-', $items[2]);
$name1 = $vars1[0];
$$name1 = $vars1[1];
echo $title;