2010-08-19 61 views
0

我第一次在这里发帖并希望有人能够帮助我。使用带有preg_replace()的索引数组的问题PHP

我有一个文件卫生组织在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作为参考。

在此先感谢您的帮助:)

+2

你能描述什么不适合你吗?输入,输出和预期输出将有助于...... – ircmaxell 2010-08-19 14:23:27

+4

不要在''/ $ i /''和''\ r \ n''上使用单引号。改用双引号。看到这里的区别:http://php.net/manual/en/language.types.string.php – NullUserException 2010-08-19 14:24:37

+0

我不知道,但我觉得很奇怪,在这种情况下使用正则表达式。 – BoltClock 2010-08-19 14:24:42

回答

0

这不行吗?

implode(" ", range(0, 410)) 

看起来很奇怪,你想改变他们“就地”。

+0

殴打它:)准确地说我在想什么。 – 2010-08-19 14:24:59

+0

你错过了这个评论:'//这不是真正的文件,但会做。实际的文件比较复杂。这只是一个测试字符串。“# – NullUserException 2010-08-19 14:28:09

+1

@Null不,我读过它。但它没有提供任何见解。如果有的话,它可能会使正则表达式的解决方案不太理想,因为如果接着文本,它可能包含一些数字。 – Artefacto 2010-08-19 14:30:13

0

你的“模式”阵列看起来像这样:

$patterns (
    610 => '/$i/', 
    611 => '/$i/', 
... 
} 

您需要在7号线使用双引号:

$patterns[$i] = "/$i/"; 
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如果图案比较复杂(如只搜索该行的开始,等等)...但对于这样一个简单的模式,这是不值得的(恕我直言)...

+0

''\ r \ n''不会是换行符。 'str_replace()'也不是真的适合这个(想想单词边界) – NullUserException 2010-08-19 14:32:06

+0

我知道这一点。但他说他正在处理文件。所以我认为他知道这不会是一条新的路线,并且希望在那里放置一个字面上的\ r \ n ......我不确定这是一个错误还是明确的,所以我只是用(s)他提供... – ircmaxell 2010-08-19 14:33:29

+0

是的,这将有助于如果OP提供实际的输入和预期的输出文件 – NullUserException 2010-08-19 14:35:17