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