regex — PHP preg_replace

Поэтому я пытался заставить эти обратные ссылки работать, но я не могу понять это ради своей жизни.

В настоящее время у меня есть эта строка <% size_../files/file.rar %> и мне нужно заменить его на фактический размер файла.

Это то, что я до сих пор.

$oldStr = "<% size_../files/file.rar %>";
$newStr = preg_replace("/<% size_(\w+) %>/", filesize("$1"), $oldStr);

В основном мне нужно получить шаблон (\ w +) и использовать его для использования функции размера файла.

1

Решение

\ w — это всего лишь [A-Za-z0-9_], поэтому вам нужно обрабатывать другие символы, пробелы и т. д. Либо добавьте все нужные вам типы, либо, возможно, сопоставьте все до «%>».

Вы можете использовать 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
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]