我试着从给定的字符串中删除第一个单词。到目前为止..。
$word = 'removeMe|meow|whatever';
$needle = 'removeMe';
$haystack = ''; // To replace with.
$word = str_replace( $needle, $haystack, $word );效果很好,但问题是当$word是这样的时候.
$word = 'removeMe|meow|removeMe|whatever';我不想删除第二个$needle。这有可能吗?)
发布于 2011-03-06 12:46:15
不幸的是,PHP默认不支持这一点。这里有一个函数可以这样做:
function str_replace_once($needle, $replace, $haystack){
$pos = strpos($haystack, $needle);
if ($pos === false) {
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}如果只想在字符串开头替换文本:
$str = preg_replace('/^'.preg_quote($word, '/').'/', '', $str);如果您的字符串实际上是一个|-separated列表,请参见@lonesomeday的答案。
发布于 2011-03-06 12:53:18
PHPs 替换通过限制参数直接支持这一点。
像这样:
# now: removeMe|meow|removeMe|whatever
$word = preg_replace("/$needle/", $haystack, $word, 1);
# now: |meow|removeMe|whatever如果你的针头只出现在一开始,,某事物。就像一个简单的
$word = preg_replace("/^$needle/", $haystack, $word);应该就够了。
问候
rbo
发布于 2012-09-24 11:35:49
爆炸函数的第三个参数限制单词将被拆分多少次。这为我提供了一个非常干净的解决方案。来自php.net
如果设置了限制并为正,则返回的数组将包含极限元素的最大值,最后一个元素将包含字符串的其余部分。
$split = explode('|', $word, 2);
$word = $split[1];https://stackoverflow.com/questions/5210522
复制相似问题