我是正则表达式新手,所以我需要你的帮助。
我需要替换字符串中的 8000 '"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"
这不是我需要的。
我在这里做错了什么?谢谢!
最佳答案
您将整个模式字符串替换为“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);
=> "ts";s:4:"7000";s:2:"tr";s:3:"200"
关于php - 简单的正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945450/