-2

我在用新数字替换字符串中的数字时遇到问题。描述在这里。问题是,当我上传文件时,它会将文件名保存在已经找到该文件的同一目录中。因此,服务器保存附加(1)到文件名的文件名。

$file_name = 'Haller(1).jpg';

这是我放在这里的示例字符串。现在我需要做的是这个

$number = 5;
$file_name = 'Haller(1).jpg';

输出

$file_name = 'Haller(5).jpg';

我怎么能在 php.ini 中做到这一点。我的正则表达式太弱了。请帮忙

4

4 回答 4

2
$number = 5;
$file_name = 'Haller(1).jpg';

echo preg_replace('/\(\d+\)/', '(' . $number . ')', $file_name); // Haller(5).jpg
  • \d匹配数字。
于 2013-08-05T04:38:55.127 回答
2

尝试 preg_replace

preg_replace('/\(\d+\)/', '(' . $your_number_to_replace . ')', $your_file_name);

http://php.net/manual/en/function.preg-replace.php

于 2013-08-05T04:41:27.433 回答
0

你可以试试preg_replace

$number = 5;
$file_name = 'Haller(1).jpg'
$return = preg_replace("/\d/", $number, $file_name);
echo $return;

请注意,我只放置了\d因为您的要求只有 1 个要替换的号码。如果您期望一个多位数的数字,请将其更改为\d+

于 2013-08-05T04:41:21.450 回答
0

您可以使用 preg_replace http://php.net/manual/en/function.preg-replace.php一次可以替换多个值

<?php
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
                   '/^\s*{(\w+)}\s*=/');
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
?>
于 2013-08-05T05:09:44.223 回答