|
и |
, а потом str_replace() удалит пробелы:$str = ' текст текст | текст текст текст | текст текст ';
$str = preg_replace_callback(
'~\|\K[^\|]+(?=\|)~',
function($m){
return str_replace(' ', '', $m[0]);
},
$str
);
var_dump($str);
$pattern = preg_replace('/{([a-z]+):([^\}]+)}/', '(?P<\1>\2)', 'post/{id:\d+}');
var_dump($pattern);
// Результат: post/(?P<id>\d+)
что значят эти <>?Это ограничители для имени индекса в массиве соответствий. Понятнее не стало? ) Просто такой синтаксис, его надо знать, если в планах использование регулярных выражений. А в браузере вы их не видели, потому что он всё, что в угловых скобках, воспринимает как html-теги. Чтобы увидеть - смотрите исходный код.
$pattern = preg_replace('/{([a-z]+):([^\}]+)}/', '(?P<\1>\2)', 'post/{id:\d+}');
var_dump($pattern);
// post/(?P<id>\d+)
А чтобы остальные теги учитывались, можно подкорректировать шаблон:
'~<p>.+?</p>~'