Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вырезать вхождения (несколько) из строки
Форумы портала PHP.SU » PHP » Программирование на PHP » Вырезать вхождения (несколько) из строки

Страниц (1): [1]
 

1. Евегнйи1721 - 07 Марта, 2020 - 09:35:01 - перейти к сообщению
Здравствуйте, подскажите пожалуйста как вырезать вхождения из строки

// Исходная строка
MINI «ДУЭТ» – 3000 р. MINI «SABAI» – 3500 р.

// Нужно
Вырезать от "–" до "р."
Поставить разделитель ";"

// Должно стать
MINI «ДУЭТ»; MINI «SABAI»
2. Строитель - 07 Марта, 2020 - 20:20:06 - перейти к сообщению
Евегнйи1721 пишет:
Здравствуйте, подскажите пожалуйста как вырезать вхождения из строки

// Исходная строка
MINI «ДУЭТ» – 3000 р. MINI «SABAI» – 3500 р.

// Нужно
Вырезать от "–" до "р."
Поставить разделитель ";"

// Должно стать
MINI «ДУЭТ»; MINI «SABAI»
https://regex101[dot]com/r/VhJQNo/1
3. Vladimir Kheifets - 07 Марта, 2020 - 20:43:45 - перейти к сообщению
Строитель пишет:
Евегнйи1721 пишет:
Здравствуйте, подскажите пожалуйста как вырезать вхождения из строки

// Исходная строка
MINI «ДУЭТ» – 3000 р. MINI «SABAI» – 3500 р.

// Нужно
Вырезать от "–" до "р."
Поставить разделитель ";"

// Должно стать
MINI «ДУЭТ»; MINI «SABAI»
https://regex101.com/r/VhJQNo/1


Должно стать:
MINI «ДУЭТ»; MINI «SABAI»
а у Вас получилось:
MINI «ДУЭТ»; MINI «SABAI»;
Последнее должно заменяться не на ";" ,а на ""
м.б.
4. Строитель - 07 Марта, 2020 - 22:15:50 - перейти к сообщению
Vladimir Kheifets, дак я решение показал без PHP. Полученный результат можно либо тримить ( $str = rtrim($str, ';') ), либо выполнять в PCRE замену на строку нулевой длины, а на стороне PHP полученную подстроку джоинить ( $str = join(';', $str) )
5. Vladimir Kheifets - 08 Марта, 2020 - 06:37:27 - перейти к сообщению
Строитель пишет:
Vladimir Kheifets, дак я решение показал без PHP. Полученный результат можно либо тримить ( $str = rtrim($str, ';') ), либо выполнять в PCRE замену на строку нулевой длины, а на стороне PHP полученную подстроку джоинить ( $str = join(';', $str) )

Строитель, посмотрите, пожалуйста, два моих решения на PHP
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $str="MINI «ДУЭТ» – 3000 р. MINI «SABAI» – 3500 р.";
  3. //1.
  4. echo mb_substr(preg_replace("/\ \–\ \d+\ р\./u",";",$str),0,-1),"<br>";
  5. //2.
  6. $pattern[]="/\ \–\ \d+\ р\.\ /u";
  7. $pattern[]="/\ \–\ \d+\ р\./u";
  8. echo preg_replace($pattern,["; ",""],$str),"<br>";
  9. /*
  10. результаты:
  11. MINI «ДУЭТ»; MINI «SABAI»
  12. MINI «ДУЭТ»; MINI «SABAI»
  13. */
  14. ?>

 

Powered by ExBB FM 1.0 RC1