php - 如何使用php删除字符串中的重复字符?
问题描述
我正在做一个用 php 清理文本的项目。说我有这样的字符串:
$string = 'Life is like. . . . . . a box of chocolate. . . . . '; //each dot separated by space
我怎样才能得到像这样的输出
$string ='Life is like a box of chocolate';
解决方案
如果您的预期结果只是去除点和周围的空格,您可以使用preg_replace,但要获得预期结果,您需要更复杂的正则表达式:
echo preg_replace(array("/(?<!\w) *\. */", "/(?<=\w)\. */"), array("", " "), $string);
在这里,我使用两个正则表达式的数组来匹配两种不同的情况:
- 一个点后面和前面有 0 个或多个空格,前面都有一个不是字母或数字的字符(
\w
在正则表达式中表示字母或数字,这是一个否定的后视)。这被一个空字符串代替。 - 一个点后跟 0 个或多个空格,前面是一个字母或数字。这被一个空格代替。
2是匹配并删除点,'like. '
但在单词后留下一个空格。
这给出了您的预期结果:'Life is like a box of chocolate'
您可以了解更多关于 regex(正则表达式的缩写)在网络上寻找教程的信息。
推荐阅读
- java - Spring Boot 获取每个请求映射的应用程序属性
- node.js - 想要从 sequelize ORM 检查异常或失败原因
- python - 使用 kinect 深度相机在 python 中跟踪球
- javascript - 在javascript中将一个对象添加到另一个对象
- c - 释放指向结构的指针导致程序“卡住”
- android - 使用服务下载文件
- c# - MongoDb 空唯一索引
- django - Django MultiSelectField,每个选项有多个字段
- bash - 在 Fedora 28 上自动启用 bash 补全
- apache-kafka - 如何创建一个 KTable,指定一个 json 序列化程序和一个商店名称及其物化定义