PHP正则表达式替换计算

问题描述:

这是来自大型文本文件的一些示例文本。PHP正则表达式替换计算

(2, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(3, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(4, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(5, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(6, 1, 3, 2, 'text...','other text...', 'more text...', ...), 

现在我需要添加19到第一列的每个值...

(21, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(22, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(23, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(24, 1, 3, 2, 'text...','other text...', 'more text...', ...), 
(25, 1, 3, 2, 'text...','other text...', 'more text...', ...), 

preg_replace_callback()似乎是解决方案,但我真的不使用正则表达式...

preg_replace_callback(
    '/(?<=\()(\d+)(?=,.+\),?\v)/', 
    function($match) { 
     return (string)($match[1]+19); 
    }, 
    $large_text 
); 
+0

非常感谢! (正则表达式让我有点头晕) – Glenn 2010-08-14 17:41:22

+0

但是,能否请你解释一下reg。你用过的表情? – Glenn 2010-08-14 17:47:52

+0

'(? stillstanding 2010-08-14 18:10:09

这会为stdin做。

// Your function 
function add19($line) { 
    $line = preg_replace_callback(
     '/^\(([^,]*),/', 
     create_function(
      // single quotes are essential here, 
      // or alternative escape all $ as \$ 
      '$matches', 
      'return ("(" . (intval($matches[1])+19) . ",");' 
     ), 
     $line 
    ); 
    return $line; 
} 

// Example reading from stdin 
$fp = fopen("php://stdin", "r") or die("can't read stdin"); 
while (!feof($fp)) { 
    $line = add19(fgets($fp)); 
    echo $line; 
} 
fclose($fp);