2016-02-01 2 views
0

Я искал для себя какую-то помощь, но пока не нашел своего решения. Проблема во многом подобна этой: Extract address from stringУдаление адреса из строки

Но я не могу переписать PHP-код для решения моей проблемы.

Я использую Magento, и у меня есть только одно поле адреса, объединяющее имя улицы и номер дома. Для моего экспорта CSV я использую расширение XSLT, которое также может работать с PHP. Для получения адреса и импорта мне нужно, чтобы имя улицы и номер дома были 2 строки.

В данный момент я использую: preg_replace ('/ [0-9,.] /', '', $ Address);

для получения улицы,

и: preg_replace ('/ [^ 0-9]. /', '', $ Адрес);

для извлечения номера. И ... это просто не работает во многих ситуациях. Потому что иногда число указывается в названии улицы (например, на 2-й улице), или символ включен в номер номера (например, 36-B).

Единственные 2 вещи, которые мы всегда знаем, являются «всегда номер дома включает в себя ряд» и «номер дома (иногда включая символы) всегда в конце строки»

Я сделал образ несколько примеров: Examples

+0

Пожалуйста, укажите желаемый вход и выход – pouyan

+0

Они приведены в образце примеров. Источником будет вход, строка 1 и строка 2 - 2 строки вывода –

ответ

0

Вам нужно будет найти последнее число в строке. Перед первым пространством до этого и разбить его в этом положении

0

Я нашел следующий код для работы почти идеально.

static function addressFix($address){ 
    $r = strrev ($address); 
    $str1= preg_replace('/^(.*?\d+)(.*?)$/', '$2', $r); 
    return strrev($str1); 
} 

static function houseNumberFix($address){ 
    $r = strrev ($address); 
    $str2= preg_replace('/^(.*?\d+)(.*?)$/', '$1', $r); 
    return strrev($str2); 
} 
Смежные вопросы