<?php
$subject = 'Консультация по статье 18.1 необязательное слово 1245.40 руб.';
$result = preg_match('~(.+?)\d+(?:\.\d+)?\h?руб\.~', $subject, $result) ? $result[1] : '';
echo $result; // Консультация по статье 18.1 необязательное слово
ничего не происходит. ни ошибок, ни предупреждений.Дак если вы не видите ни того ни другого, то надо или включить их наконец, или смотреть, что пишет в логи ваш сервер. И тогда увидите как минимум notice: Undefined offset: 1 in ....
<?php
$subject = 'Консультация по статье 18.1 1245.40 руб. Прочие услуги: 200 руб.';
$price1 = $price2 = '';
if ($total = preg_match_all('~\d+(?:\.\d+)?(?=\h?руб\.)~', $subject, $result)) {
$price1 = $result[0][0];
if ($total == 2) {
[$price1, $price2] = $result[0];
}
}
var_dump($price1, $price2);
Может символ какой?Может у вас там неразрывный пробел, который при публикации поста на форуме преобразуется местным парсером в обычный пробел.