PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: регулярные выражения
Евегнйи1721
Отправлено: 07 Марта, 2020 - 09:35:01
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Здравствуйте, подскажите пожалуйста как вырезать вхождения из строки

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

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

// Должно стать
MINI «ДУЭТ»; MINI «SABAI»
 
 Top
Строитель
Отправлено: 07 Марта, 2020 - 20:20:06
Post Id



Участник


Покинул форум
Сообщений всего: 1548
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 70 раз(а)




Евегнйи1721 пишет:
Здравствуйте, подскажите пожалуйста как вырезать вхождения из строки

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

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

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


-----
~ PHP-8 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
Vladimir Kheifets
Отправлено: 07 Марта, 2020 - 20:43:45
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 581
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 26 раз(а)




Строитель пишет:
Евегнйи1721 пишет:
Здравствуйте, подскажите пожалуйста как вырезать вхождения из строки

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

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

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


Должно стать:
MINI «ДУЭТ»; MINI «SABAI»
а у Вас получилось:
MINI «ДУЭТ»; MINI «SABAI»;
Последнее должно заменяться не на ";" ,а на ""
м.б.

(Отредактировано автором: 07 Марта, 2020 - 20:52:51)

 
 Top
Строитель
Отправлено: 07 Марта, 2020 - 22:15:50
Post Id



Участник


Покинул форум
Сообщений всего: 1548
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 70 раз(а)




Vladimir Kheifets, дак я решение показал без PHP. Полученный результат можно либо тримить ( $str = rtrim($str, ';') ), либо выполнять в PCRE замену на строку нулевой длины, а на стороне PHP полученную подстроку джоинить ( $str = join(';', $str) )


-----
~ PHP-8 & REGEXP - This is a really powerful kit ~
****************************************
 
 Top
Vladimir Kheifets
Отправлено: 08 Марта, 2020 - 06:37:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 581
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 26 раз(а)




Строитель пишет:
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. ?>

(Отредактировано автором: 08 Марта, 2020 - 06:54:08)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB