Laravel: использование Replace String, которая действует после элемента First - PullRequest
0 голосов
/ 05 марта 2019

Мне нужен str_replace или все, что действует после первого элемента, например:

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

и вот результат, который я хочу:

"Hello-World I am Pr Pro"

1 Ответ

0 голосов
/ 05 марта 2019

Движок регулярных выражений PHP сделает это для вас, используя 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 работал в прошлом без переменной, поэтому я просто не делаю ее настолько плотной.

Я сделал приведенную выше функцию предельно понятной и простой, чтобы вы могли следовать логике и изменять по своему усмотрению.Вам лучше работать с первой версией, чем с двумя другими, если вы хотите хороший, поддерживаемый код.

...