如果编写了这个函数,我的脚本工作正常:
$extension_allowed =array(".pdf",".jpg",".jpeg",".png",".txt",".doc",".docx", ".odt", ".rtf", ".xls", ".xlsx", ".ods");
但是,如果我想从应用程序配置中配置扩展并从查询中提取此扩展,那么如何在数组中传递扩展?
// extensions
$extensionsUploadFileQ = mysql_query("
SELECT
*
FROM table_config
WHERE field1 = 'EXTENSIONS_UPLOAD'
");
$extensionsUploadFileR=mysql_fetch_array($extensionsUploadFileQ);
$extensionUploadFileParameter=$extensionsUploadFileR['value_extensions'];
查询结果,传递变量$ extensionUploadFileParameter但不能使用此数组:
$extension_allowed =array($extensionUploadFileParameter);
如何解决这个问题?
由于
答案 0 :(得分:1)
如果我对你在MySQL数据库中的理解很好,你就得到了你的" EXTENSIONS_UPLOAD"像" .pdf,.jpg,.jpeg,.png,.txt,.doc,.docx"并且您只想将其转换为PHP数组类型。
如果是,则尝试使用explode PHP函数:
// extensionUploadFileParameter = ".pdf,.jpg,.jpeg";
$extension_allowed = explode(",", $extensionUploadFileParameter);
/*
$extension_allowed will have:
array(3)
(
[0] => string(4) ".pdf"
[1] => string(4) ".jpg"
[2] => string(4) ".jpeg"
)
*/
OR
// extensionUploadFileParameter = '".pdf",".jpg",".jpeg"';
preg_match_all('/(.\w+)/', $extensionUploadFileParameter, $matches);
$extension_allowed = $matches[0];
/*
$extension_allowed will have:
Array
(
[0] => .pdf
[1] => .jpg
[2] => .jpeg
)
*/
我希望它有所帮助。
祝你好运。P.S。尽量避免使用" eval"功能:
警告eval()语言结构非常危险,因为它 允许执行任意PHP代码。因此不鼓励使用它。 如果您已经仔细确认除了以外没有其他选择 使用此构造,请特别注意不要传递任何用户 提供数据而未事先正确验证。
答案 1 :(得分:1)
您写道:
在mySQL文件中我有这个值字符串:“。pdf”,“。jpg”,“。jpeg”,“。png”,“。txt”,“。doc”,“。docx”,“。odt “,”。rtf“,”。xls“,”。xlsx“,”。ods“我认为:当这个tring是从查询中提取时,传递的是变量$ extensionUploadFileParameter - Frankie
您可以使用eval功能
eval('$extension_allowed = array(' . $extensionUploadFileParameter . ');');
答案 2 :(得分:0)
谢谢。该脚本可以正常使用:
preg_match_all('/(.\w+)/', $extensionUploadFileParameter, $matches);
$extension_allowed = $matches[0];
eval()很危险:eval()语言结构非常危险,因为它允许执行任意PHP代码