Laravel:使用在第一个元素之后起作用的替换字符串

时间:2019-03-04 22:37:40

标签: php str-replace

我需要一个str_replace或在第一个元素之后起作用的任何东西:

"Hello-World-I-am-Pr-Pro"

这就是我想要的结果

"Hello-World I am Pr Pro"

1 个答案:

答案 0 :(得分:1)

PHP regex引擎将使用preg_replace为您做到这一点:

function replaceViaRegex($needle, $to, $haystack)
{
    $regexStr = '/'.preg_quote($needle, '/').'/';
    $result = preg_replace($regexStr, $to, $haystack, 1);
    return $result;
}

$foo = "Hello-World-I-am-Pr-Pro";
$foo2 = replaceViaRegex('-', ' ', $foo); 

echo $foo2;

或者,您可以

$foo = "Hello-World-I-am-Pr-Pro";
$regex = '/-/';
$foo2 = preg_replace($regex, ' ', $foo, 1);

...但是那远远不够灵活。甚至

$foo2 = preg_replace('/-/', ' ', "Hello-World-I-am-Pr-Pro", 1);

...但是我过去在使preg_replace工作不带变量时遇到了麻烦,因此我只是避免使其变得那么密集。

我使上面的功能非常清楚和简单,因此您可以按照逻辑进行选择并进行修改。如果您想要良好的,可维护的代码,则使用第一个版本比使用其他两个版本要好得多。