我需要一些PHP类的帮助。我对它是如何工作的知识知之甚少,我正试图发现它的更多信息。与此同时,我遇到一个问题,我需要在一个类中运行这些函数后获取变量。
protected function upcount_name_callback($matches) {
$index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
$ext = isset($matches[2]) ? $matches[2] : '';
return ' ('.$index.')'.$ext;
}
protected function upcount_name($name) {
return preg_replace_callback(
'/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/',
array($this, 'upcount_name_callback'),
$name,
1
);
}
我需要在以下JS语句中检索此变量并发送到我的INSERT php文件。
$('#albumBack.fileupload').bind('fileuploaddone',function(e,data) {
//Loop through each page and return object and write to DB
$.each(data.files, function (index, file) {
var filename = file.name;
$.ajax({
type: "POST",
url: "../albumUploader/queries/albumPages.php",
data: {file: filename}
});
});
});
我目前获取的文件名是原始名称,而不是附加名称。 感谢您的帮助。
albumPages.php
//Variables for gallerimage table
$originalName = $_POST['file'];
$clientRef = $_SESSION['clientRef'];
$galleryID = $_SESSION['newGalleryId'];
$galleryLayout = $_SESSION['layoutID'];
$imageID = rand();
//Find the sort# for the gallery
$qSortOrder = mysql_query("SELECT MAX(sort) AS sortOrder
,id
,clientRef
,galleryId
FROM galleryimage
WHERE galleryId='{$galleryID}'
AND clientRef= '{$clientRef}'
");
$fsortOrder = mysql_fetch_array($qSortOrder);
//Latest revision
$orderNumber = $fsortOrder['sortOrder'];
$order = $orderNumber + 1;
$query = "INSERT INTO galleryimage
(
galleryId
,image
,OrgImageName
,clientRef
,sort
,layout
) VALUES (
'{$galleryID}'
,'{$imageID}'
,'{$originalName}'
,'{$clientRef}'
,'{$order}'
,'{$galleryLayout}'
)";
$return = mysql_query($query);
$ originalName是我需要定义为img.jpg,$ img(1).jpg等的$变量。我只是POSTING文件,最终成为输入中的原始选定文件。
这是选择文件的表单。
<form class="fileupload" id="albumBack" action="../js/jQuery-file-upload/server/php/" method="POST" enctype="multipart/form-data" >
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="row fileupload-buttonbar">
<span class="btn btn-success fileinput-button">
<span>Choose Back</span>
<input type="file" name="files[]">
</span>
</div>
答案 0 :(得分:1)
在不知道albumBack.php的内容的情况下,很难确定您将看到的行为。但我们假设albumBack.php在某个时刻调用了upcount_name($name)
。
然后会发生preg_replace_callback的调用。此函数专门采用字符串和正则表达式,以及附加的“回调”函数。它在字符串上运行正则表达式并获取一组匹配,然后传递给回调函数。回调允许您以灵活的方式“注入”行为:在这种情况下,回调是一种定义每个正则表达式匹配的替换字符串的方式。
此处调用upcount_name_callback
函数。要了解它的作用,您必须了解正则表达式。这有点复杂,但基本上它正在寻找一些数字([\d]+
部分),一个.
后面跟一行结束。 upcount_name_callback
将此值作为一个数字,它递增一个扩展名,如果它存在则返回原样,如果不存在,则返回空字符串。
结果是,这似乎将'blah.jpg'改为'blah1.jpg'而'blah1.jpg'改为'blah2.jpg'。但是,看起来你回来的名字是否相同,它实际上并没有被执行。你需要发布来自albumBack.php的调用代码行来确认这一点。