Мой код выглядит следующим образом:
$escapedOperator = ":";
$operator['symbol'] = ":";
$string = 'title: "space before" and text breaks';
if(count(preg_grep('/\w["]*\s*'.$escapedOperator.'\s*["]*\w/',$string))){
$search = "/\s*".$escapedOperator."\s*/";
$string = preg_replace($search,$operator['symbol'],$string);
}else{
$string=str_replace($operator['symbol'],"",$string);
}
Я получаю вывод:
title "space before" and text breaks
Но мне нужно:
title:"space before" and text breaks
Как уже упоминалось выше, preg_grep()
требует массив в качестве второго параметра, а не строки. Если вы измените свой:
$string = 'title: "space before" and text breaks';
Для того, чтобы:
$string = array('title: "space before" and text breaks');
Ваш код работает, и echo $string[0];
будет выводить title:"space before" and text breaks
Если цель состоит в том, чтобы просто удалить пробел вокруг двоеточия (:), то не могли бы вы просто сделать это?
$string = 'title: "space before" and text breaks';
$string = preg_replace('/\s*:\s*/', ":", $string);
echo $string[0];
Это также будет выводить title:"space before" and text breaks
Других решений пока нет …