我第一次在这里发帖,希望有人能帮助我。
我有一个文件,编号从610开始,然后继续到1019.我想使用PHP的preg_match()函数从0开始编号,然后一直持续到410.
以下是我一直在研究的一些代码。但是我无法获得替换数字的功能。我不知道为什么,我也没有任何错误。
<?php
$string = "610 611 612 613 614 615 616 617"; //this isnt the actual file but will do. The actual file is more complicated. This is just a test string.
$patterns = array();
for ($i=610; $i<1020; $i++) {
$patterns[$i] = '/$i/';
}
$replacements = array();
for ($j=1; $j<410; $j++) {
$replacements[$j] = '\r\n' . $j;
}
$newText = preg_replace($patterns, $replacements, $string);
echo $newText;
?>
我使用示例#2格式http://www.php.net/manual/en/function.preg-replace.php作为参考。
提前感谢您的任何帮助:)
答案 0 :(得分:0)
这不行吗?
implode(" ", range(0, 410))
你想“就地”改变它们似乎很奇怪。
答案 1 :(得分:0)
您的“模式”数组如下所示:
$patterns (
610 => '/$i/',
611 => '/$i/',
...
}
您需要在第7行使用双引号:
$patterns[$i] = "/$i/";
答案 2 :(得分:0)
对于这样一个简单的案例,不要为正则表达式而烦恼...只需使用str_replace。它会更快,相当于你现在的代码......
$patterns = array();
for ($i=610; $i<1020; $i++) {
$patterns[] = $i;
}
$replacements = array();
for ($j=1; $j<410; $j++) {
$replacements[] = '\r\n' . $j;
}
$string = str_replace($patterns, $replacements, $string);
现在,如果模式更复杂(例如只搜索行的开头等),你仍然需要使用preg_replace ...但是对于这样一个简单的模式,它是不值得的(恕我直言) ...