所以我试图让这个反向引用起作用,但我无法弄清楚我的生活。
目前我有这个字符串<% size_../files/file.rar %>
,我需要用实际文件大小替换它。
这是我到目前为止所做的。
$oldStr = "<% size_../files/file.rar %>";
$newStr = preg_replace("/<% size_(\w+) %>/", filesize("$1"), $oldStr);
基本上我需要获取模式(\ w +)并将其用于via filesize函数。
答案 0 :(得分:1)
\ w仅为[A-Za-z0-9_],因此您需要处理其他字符,空格等。您可以添加所需的所有类型,也可以将所有类型都匹配到'%&gt;'。
您可以使用preg_replace然后获取文件大小或使用preg_replace_callback。
几个例子:
$oldStr = "<% size_../files/file with spaces.rar %>";
$size1 = preg_replace_callback("/<% size_([\w\.\/\s]+) %>/",
function ($matches) {
return filesize($matches[1]);
},
$oldStr);
$newStr = preg_replace("/<% size_(.+) %>/", "$1", $oldStr);
if (is_file($newStr)) {
$size2 = filesize($newStr);
} else {
//not a file
}