0Pricing
PHP Academy · 课时

使用 preg_replace 替换文本

使用替换字符串和反向引用替换匹配内容。

使用 preg_replace 替换文本 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。

preg_replace() 函数签名

preg_replace($pattern, $replacement, $subject) 返回替换所有匹配项后的 subject。传入 subject 数组即可一次处理多个字符串。

简单替换

将字符串中的所有数字替换为星号。

<?php
$result = preg_replace('/\d/', '*', 'Order #12345');
echo $result; // "Order #*****"

替换中的反向引用

使用 $1、$2……(或 \1、\2)将捕获组插入替换字符串。

<?php
$result = preg_replace('/^(\w+)\s(\w+)$/', '$2, $1', 'John Smith');
echo $result; // "Smith, John"

命名反向引用

命名捕获组可以在替换中通过 ${name} 引用。

<?php
$result = preg_replace(
    '/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
    '${day}/${month}/${year}',
    '2025-06-15'
);
echo $result; // "15/06/2025"

替换多个模式

传入模式数组和替换内容数组,即可一次处理多条规则。

<?php
$result = preg_replace(
    ['/foo/', '/bar/'],
    ['baz',   'qux'],
    'foo and bar'
);
echo $result; // "baz and qux"

限制参数

第 4 个参数限制替换次数。传入 -1 表示不限制次数(默认值)。

<?php
$result = preg_replace('/a/', 'X', 'banana', 2);
echo $result; // "bXnXna"

计数参数

传入第 5 个变量,以接收实际执行的替换次数。

<?php
$count  = 0;
$result = preg_replace('/e/', '3', 'hello everyone', -1, $count);
echo "$count replacements"; // "3 replacements"

preg_replace_callback()

当替换逻辑较为复杂时,请使用 preg_replace_callback(),通过闭包处理每个匹配项。

<?php
$result = preg_replace_callback(
    '/\d+/',
    fn($m) => $m[0] * 2,
    'Item: 5, Qty: 3'
);
echo $result; // "Item: 10, Qty: 6"

移除 HTML 标签示例

使用简单的正则表达式移除所有 HTML 标签(生产环境中请使用 strip_tags())。

<?php
$clean = preg_replace('/<[^>]+>/', '', '<b>Hello</b> World');
echo $clean; // "Hello World"

将字符串转换为 Slug

将标题转换为适合 URL 使用的 Slug。

<?php
function slugify(string $s): string {
    $s = strtolower($s);
    $s = preg_replace('/[^a-z0-9]+/', '-', $s);
    return trim($s, '-');
}
echo slugify('Hello World!'); // "hello-world"

性能说明

保持模式简单,避免灾难性回溯。对于复杂转换,请使用 preg_replace_callback,而不是叠加多次 preg_replace 调用。

与 str_replace 的区别

对于纯文本替换,str_replace 更快。只有在需要正则表达式模式的功能时,才使用 preg_replace。

总结

preg_replace 会替换模式的所有匹配项。使用反向引用($1)重用捕获组。替换逻辑具有动态性时,请使用 preg_replace_callback。

快速检查

如何在 preg_replace 的替换字符串中引用第一个捕获组?

常见问题解答

「使用 preg_replace 替换文本」课时是免费的吗?

是的 — 「使用 preg_replace 替换文本」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「使用 preg_replace 替换文本」这节课中我会学到什么?

使用替换字符串和反向引用替换匹配内容。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「使用 preg_replace 替换文本」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 正则表达式语法基础
  2. 使用 preg_match 进行匹配
  3. 使用 preg_replace 替换文本
  4. 拆分字符串与实用模式
← 返回 PHP Academy