php - 如何将双/多个字母替换为单个字母?

标签 php regex

我需要将一个单词中出现两次或更多次的任何字母转换为一个单独的字母。

例如:

School -> Schol
Google -> Gogle
Gooooogle -> Gogle
VooDoo -> Vodo

我尝试了以下方法,但卡在了 eregi_replace 的第二个参数处。

$word = 'Goooogle';
$word2 = eregi_replace("([a-z]{2,})", "?", $word);

如果我使用 \\\1 替换 ?,它会显示完全匹配。 如何使其成为单个字母?

有人可以帮忙吗?谢谢

最佳答案

参见 regular expression to replace two (or more) consecutive characters by only one?

顺便说一下:您应该使用 preg_* (PCRE) 函数而不是已弃用的 ereg_* 函数 (POSIX)。

Richard Szalay的回答引导正确的方法:

$word = 'Goooogle';
$word2 = preg_replace('/(\w)\1+/', '$1', $word);

关于php - 如何将双/多个字母替换为单个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801545/

相关文章:

php - 如何在 Laravel 5.8 中更改应用程序名称

PHP 正则表达式句点

Java 正则表达式匹配特殊字符,除非它位于括号内

regex - 使用 find 或 grep 查找来自不同编码系统(Windows 到 Linux)的带有重音字符的文件名

regex - 正则表达式可以在液体中使用吗?

php - 如何制作由 Google 索引为静态页面的 PHP/Cakephp 数据库驱动页面

php - 在 PHP 中确定客户端操作系统

php - 删除 Wordpress 自定义帖子类型(和博客帖子)上的 'meta info' - CSS 或 PHP?

jquery - 没有办法将正则表达式应用于时间输入

php 检查数据库中的行是否存在总是返回 true