首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只删除给定字符串中的第一个单词

只删除给定字符串中的第一个单词
EN

Stack Overflow用户
提问于 2011-03-06 12:41:17
回答 6查看 6.7K关注 0票数 4

我试着从给定的字符串中删除第一个单词。到目前为止..。

代码语言:javascript
复制
$word = 'removeMe|meow|whatever';

$needle = 'removeMe';
$haystack = ''; // To replace with.

$word = str_replace( $needle, $haystack, $word );

效果很好,但问题是当$word是这样的时候.

代码语言:javascript
复制
$word = 'removeMe|meow|removeMe|whatever';

我不想删除第二个$needle。这有可能吗?)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-06 12:46:15

不幸的是,PHP默认不支持这一点。这里有一个函数可以这样做:

代码语言:javascript
复制
function str_replace_once($needle, $replace, $haystack){
    $pos = strpos($haystack, $needle);
    if ($pos === false) {
        return $haystack;
    }
    return substr_replace($haystack, $replace, $pos, strlen($needle));
}

如果只想在字符串开头替换文本:

代码语言:javascript
复制
$str = preg_replace('/^'.preg_quote($word, '/').'/', '', $str);

如果您的字符串实际上是一个|-separated列表,请参见@lonesomeday的答案。

票数 0
EN

Stack Overflow用户

发布于 2011-03-06 12:53:18

PHPs 替换通过限制参数直接支持这一点。

像这样:

代码语言:javascript
复制
# now: removeMe|meow|removeMe|whatever

$word = preg_replace("/$needle/", $haystack, $word, 1);

# now: |meow|removeMe|whatever

如果你的针头只出现在一开始,,某事物。就像一个简单的

代码语言:javascript
复制
$word = preg_replace("/^$needle/", $haystack, $word);

应该就够了。

问候

rbo

票数 4
EN

Stack Overflow用户

发布于 2012-09-24 11:35:49

爆炸函数的第三个参数限制单词将被拆分多少次。这为我提供了一个非常干净的解决方案。来自php.net

如果设置了限制并为正,则返回的数组将包含极限元素的最大值,最后一个元素将包含字符串的其余部分。

代码语言:javascript
复制
$split = explode('|', $word, 2);
$word = $split[1];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5210522

复制
相关文章

相似问题

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