如何在php中包含括号的字符串中替换数字

时间:2013-08-05 04:36:15

标签: php regex replace

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

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

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

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

输出

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

我怎么能在PHP中这样做。我在正则表达式中太弱了。请帮忙

4 个答案:

答案 0 :(得分:2)

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

echo preg_replace('/\(\d+\)/', '(' . $number . ')', $file_name); // Haller(5).jpg
  • \d匹配数字。

答案 1 :(得分:2)

尝试preg_replace

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

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

答案 2 :(得分:0)

您可以尝试preg_replace

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

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

答案 3 :(得分: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');
?>