Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите сделать правильно перестановку в строке
 
 автор: mukola2   (15.06.2014 в 16:50)   письмо автору
 
 

Имеется прайс поставщика товара. Проблема в том, что один и тот товар у разных поставщиков идет под разным кодом, который отличается от кода который маркируется производителем и который мне требуется:
У одного поставщика все кода в таком виде:
1423-MR
1512-MR н-р
3508-8L-MR белая
А мне трубуется чтоб они были после перестановки в таком виде:
MR-1423
MR-1512
MR-3508-8L
Тоесть переставить MR с - наперед цыфр и все лишние слова руские убрать

У другого поставщика эти кода могут идти так:
MR 3511-14S
MR, 1204-24 New
MR. 10025-07
Здесь требуется сделать так:
MR-3511-14S
MR- 1204-24 New
MR- 10025-07
Тоесть поставить - , убрать где надо точку и убрать где надо запятую

Подскажите пожалуйста как правильно это сделать для этих двух поставщиков (как назло ни у одного коды товара не написаны полностью правильно)

  Ответить  
 
 автор: duhon   (16.06.2014 в 20:08)   письмо автору
 
   для: mukola2   (15.06.2014 в 16:50)
 

навскидку набросал, развивайте
<?php
$re 
'/^MR\D*(\d+)(?:(-\d+(?:[A-Z]+)?\s*\w+)$)?|(\d+)(?:(-\d+(?:[A-Z]+)?))?-MR.*$/m'
$str "1423-MR\n1512-MR н-р\n3508-8L-MR белая\nMR 3511-14S\nMR, 1204-24 New\nMR. 10025-07"
$subst 'MR-$1$3$2$4'
$result preg_replace($re$subst$str);

Результат будет такой
MR-1423
MR-1512
MR-3508-8L
MR-3511-14S
MR-1204-24 New
MR-10025-07


а поповоду сходства двух ид можно попробовать найти сходство с помощью similar_text

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования