简单的正则表达式替换

Sib*_*bul 2 php regex

我是正则表达式的新手,所以我需要你的帮助.我需要在字符串中替换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);
?>
Run Code Online (Sandbox Code Playgroud)

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

bos*_*bos 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);
Run Code Online (Sandbox Code Playgroud)

=>"ts"; s:4:"7000"; s:2:"tr"; s:3:"200"

  • +1在我完成我之前提交. (2认同)