PHP 正则表达式替换 preg_replace 函数
封面图
•
2025-10-01
•
PHP
187
0
0
0
在 PHP 中,`preg_replace()` 函数用于使用 **正则表达式** 进行字符串的搜索和替换。它是处理文本中模式匹配和替换的强大工具。 --- ## ✅ 一、函数语法 ```php mixed preg_replace ( mixed $pattern, mixed $replacement, mixed $subject [, int $limit = -1 [, int &$count ]] ) ``` ### 参数说明: | 参数 | 类型 | 说明 | |------------|-------------|------| | `$pattern` | `string` 或 `array` | 要搜索的正则表达式(可以是单个字符串或数组) | | `$replacement` | `string` 或 `array` | 替换的内容(可以是单个字符串或数组) | | `$subject` | `string` 或 `array` | 被搜索和替换的字符串或数组 | | `$limit` | `int` | 最多替换次数,默认为 `-1`(无限制) | | `$count` | `&int` | 可选参数,返回实际替换的次数 | --- ## ✅ 二、基本用法示例 ### 示例 1:简单替换 ```php $text = "Hello, world!"; $result = preg_replace("/world/", "PHP", $text); echo $result; // 输出: Hello, PHP! ``` ### 示例 2:替换多个匹配项 ```php $text = "The cat is on the mat."; $result = preg_replace("/cat|mat/", "dog", $text); echo $result; // 输出: The dog is on the dog. ``` ### 示例 3:使用分组替换 ```php $text = "John Doe"; $result = preg_replace("/(\w+)\s+(\w+)/", "$2, $1", $text); echo $result; // 输出: Doe, John ``` --- ## ✅ 三、使用回调函数进行动态替换(高级) 你可以使用 `preg_replace_callback()` 来对每个匹配项执行一个函数,进行更复杂的逻辑处理。 ### 示例: ```php $text = "The price is 100 dollars."; $result = preg_replace_callback('/\d+/', function($matches) { return $matches[0] * 2; }, $text); echo $result; // 输出: The price is 200 dollars. ``` --- ## ✅ 四、常见正则表达式示例 | 正则表达式 | 功能 | |------------|------| | `/^\d+$/` | 匹配纯数字字符串 | | `/^[a-zA-Z]+$/` | 匹配纯字母字符串 | | `/[a-z]/i` | 匹配任意小写字母(不区分大小写) | | `/<[^>]+>/` | 匹配 HTML 标签 | | `/[\w.-]+@[\w.-]+\.\w+/` | 匹配电子邮件地址 | --- ## ✅ 五、注意事项 - 正则表达式要用 `/` 包裹(如:`/pattern/`)。 - 使用 `preg_quote()` 可以转义特殊字符。 - 注意性能问题:正则表达式如果太复杂,会影响性能。 --- ## ✅ 六、完整示例代码 ```php <?php // 示例:替换所有数字为 [number] $text = "Price: 100, 200, 300."; $result = preg_replace("/\d+/", "[number]", $text); echo $result; // 输出: Price: [number], [number], [number]. ?> ``` --- 如果你有具体的替换需求(比如替换邮箱、HTML 标签、电话号码等),欢迎告诉我,我可以帮你写出对应的正则表达式。
上一篇:
php array_diff_key 使用键名比较计算数组的差集
下一篇:
php强制访问类型为下载,自定义内容,自定义文件名称
标题录入,一次不能超过6条
返回顶部
留言
留言
评论