首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换前两个单词之后的单词

如何替换前两个单词之后的单词
EN

Stack Overflow用户
提问于 2014-05-22 15:30:30
回答 1查看 24关注 0票数 0

假设我的全名是:万·艾哈迈德·万·多拉·卡马特。

我想展示的是:万·艾哈迈德·D.K

我试过这个代码:

代码语言:javascript
复制
preg_replace('/(.)[^\s]+\s?/', '${1}.', strtoupper($_GET['fullname']), 2)

但是输出是: W.A.Wan Dollah

我想要前两个单词,剩下的更短一些。请帮帮忙。

问题解决了,多亏了Casimir et Hippolyte。最后的准则是:

代码语言:javascript
复制
preg_replace('~^(?:\s*\S+){1,2}(*SKIP)(*FAIL)|(\S)\S+~', '${1}.', strtoupper($_GET['fullname']))

这是模式的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 15:34:47

您可以使用回溯控制谓词(*SKIP)(*FAIL)来避免前两个单词。

代码语言:javascript
复制
$pattern = '~^(?:\s*\S+){1,2}(*SKIP)(*FAIL)|(\S)\S+~';
$result = preg_replace_callback($pattern,
                                function ($m) { return strtoupper($m[1]) . '.'; },
                                $_GET['fullname'] );

简言之:

如果模式稍后失败,(*SKIP)将强制与前面的子模式匹配的子字符串不被重试。

(*FAIL)强制模式失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23811183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档