我是正则表达式的新手,所以我需要你的帮助。
我需要在字符串'"ts";s:4:"8000";s:2:"tr";s:3:"200"'
<?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"
,这不是我需要的。
我在这做错了什么?谢谢!
答案 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”