preg_replace str_replace

223
06 января 2018, 04:09

Пытаюсь заменить вывод х-ки товара.
Написал такой код:

$product['property_html'] = preg_replace('~(.*?Цена *:\s.*?\s)-\s(\d+\sруб\.)(.*?)$~', '${1}' . '$3', $product['property_html']);
$product['property_html'] = str_replace('Цена *','Выбранные дни аренды', $product['property_html'] );
echo $product['property_html']

Изначально $product['property_html'] выглядит вот так:

Цена 2 [prop attr=3500]: 1 день - 3500 руб.

Я хочу это всё убрать и просто выводить

Выбранные дни аренды: 1 день

Но отказывается работать - только если в str_replace я четко напишу Цена 2, а у меня есть просто Цена, Цена 3 и тд. И никак не обрезается "- 3500 руб."

Answer 1
<?php
$str = 'Цена 2 [prop attr=3500]: 1 день - 3500 руб. И так далее.';
// строка переводу не подлежит
$pattern = '~Цена[^:]*:\s*(\S+\s+\S+)\s+-\s+\S+\s+\S+~u';
$repl = 'Выбранные дни аренды: $1.';
$str = preg_replace($pattern, $repl, $str);
var_dump($str);

Результат

string(72) "Выбранные дни аренды: 1 день. И так далее."

Тест http://sandbox.onlinephpfunctions.com/code/1076a4a580bb8140623c44a120a5fbc9802ce94e

READ ALSO
Заполнение массива числами

Заполнение массива числами

Требуется заполнять массив числами 0 и 1 в случайном порядке, но чтобы в конечном итоге соотношение этих чисел было примерно такое: 0(60/40)1Кол-во...

250
Как найти программу на сервере, которая посылает tcp запросы

Как найти программу на сервере, которая посылает tcp запросы

Имеем сервер с проектом подключенным к платежным системамНад проектом трудятся 4 разработчика

234
Вывод сериалов php mysqli

Вывод сериалов php mysqli

Здравствуйте!

220