简单的正则表达式替换

时间:2011-10-30 14:26:30

标签: php regex

我是正则表达式的新手,所以我需要你的帮助。 我需要在字符串'"ts";s:4:"8000";s:2:"tr";s:3:"200"'

中替换8000
<?php
$txt = '"ts";s:4:"8000";s:2:"tr";s:3:"200"';
$pattern = '#\"ts\"\;[a-z]{1}\:[0-9]{1}\:\"([0-9]*)#';
$replacement = '7000';
$txt = preg_replace($pattern,$replacement,$txt);
print($txt);
?>

此代码输出7000";s:2:"tr";s:3:"200",这不是我需要的。 我在这做错了什么?谢谢!

1 个答案:

答案 0 :(得分:5)

您正在用“7000”替换整个模式字符串,这是错误的。使用分组:

$txt = '"ts";s:4:"8000";s:2:"tr";s:3:"200"';
$pattern = '#(\"ts\"\;[a-z]{1}\:[0-9]{1}\:\")([0-9]*)(\".*)#';
$replacement = '${1}7000${3}';
$txt = preg_replace($pattern,$replacement,$txt);
print($txt);

=&GT; “TS”; S:4: “7000”; S:2: “TR”; S:3: “200”