Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по регулярным выражениям

43K
14 декабря 2012 года
hdma
25 / / 31.12.2011
СалютУю!
Необходимость новая, не шуточная: перекроить строку этакую

 
Код:
и. о. фамилия (только если инициалы в начале строки) и прочая
или эдакую

 
Код:
и. фамилия (только если инициалы в начале строки) и прочая
в разэтакую

 
Код:
фамилия и.о. (только если инициалы в начале строки) и прочая
Преблагодарен заранее.
86K
18 декабря 2012 года
SnowLeo
8 / / 26.11.2012
Держи, сильно разбираться не хотел, дальше сам додумаешь как из массива собрать.

 
Код:
<?php
  $s = 'И. В. Иванов';
  preg_match('/((\w{1}\.) ?)((\w{1}\.) ?)?(\w*)/i', $s, $m);
  print_r($m);
 
  $s = 'И. Иванов';
  preg_match('/((\w{1}\.) ?)((\w{1}\.) ?)?(\w*)/i', $s, $m);
  print_r($m);
?>
mfender - в данном случае регулярки и правда упрощают жизнь )
8
19 декабря 2012 года
mfender
3.5K / / 15.06.2005
Цитата: SnowLeo
Держи, сильно разбираться не хотел, дальше сам додумаешь как из массива собрать.

 
Код:
<?php
  $s = 'И. В. Иванов';
  preg_match('/((\w{1}\.) ?)((\w{1}\.) ?)?(\w*)/i', $s, $m);
  print_r($m);
 
  $s = 'И. Иванов';
  preg_match('/((\w{1}\.) ?)((\w{1}\.) ?)?(\w*)/i', $s, $m);
  print_r($m);
?>
mfender - в данном случае регулярки и правда упрощают жизнь )



Как сказать, как сказать...

Тогда уж правильнее вообще вот так:

 
Код:
$s = 'И.И.Иванов';
echo preg_replace("/((.+?)\.\x20?)((.+?)\.\x20?)?(.+)/", "$5 $1 $3", $s);
Будет работать хоть с И.И.Иванов, хоть с И.Иванов, и даже с И. И.Иванов.

UPD. Ещё лучше так:

 
Код:
echo preg_replace("/((.+?)\.\x20?)((.+?)\.\x20?)?(.+)/", "$5 $2. $4.", $s);
8
14 декабря 2012 года
mfender
3.5K / / 15.06.2005
Вопрос: а зачем тут регулярные выражения? Небо греть?

Так проще:


Код:
class parseOneName {

    public $origStr = "";
    public $firstName = "";
    public $midName = "";
    public $lastName = "";

    public function __construct($str = null) {
        if (is_null($str))
            die("Идите в жопу с вашими предложениями");
        $this->origStr = trim($str);
        $this->explodePerDot();
        return $this;
    }

    private function explodePerDot() {
        $ret = explode(".", $this->origStr);
        if (sizeof($ret) < 3) {
            $this->firstName = trim($ret[0]);
            $this->lastName = trim($ret[1]);
        } elseif (sizeof($ret) == 3) {
            $this->firstName = trim($ret[0]);
            $this->midName = trim($ret[1]);
            $this->lastName = trim($ret[2]);
        }
    }

    public function getNormalName() {
        $n1 = strtoupper($this->firstName);
        $n2 = strtoupper($this->midName);
        $n3 = strtolower($this->lastName);
        $idx = false;
        $idx = strlen($this->midName) && strlen($this->firstName) && strlen($this->lastName);
        if($idx){
            return "{$n3} {$n1}.{$n2}.";
        }else{
            return "{$n3} {$n1}";
        }
    }

}

header('Content-type: text/html; charset=utf-8');

$qstr = "D.В.Сидоров";

$p = new parseOneName($qstr);
echo $p->getNormalName();
43K
14 декабря 2012 года
hdma
25 / / 31.12.2011
Цитата:
Вопрос: а зачем тут регулярные выражения? Небо греть?

Так проще:


Боюсь, в моём случае проще использовать регулярные выражения: нужны для вставки в другой язык программирования.
Небеса же грею иначе).

86K
18 декабря 2012 года
SnowLeo
8 / / 26.11.2012
Цитата: mfender
Вопрос: а зачем тут регулярные выражения? Небо греть?

Так проще:



Откуда класс? Неужели на шару написал :) ?

8
19 декабря 2012 года
mfender
3.5K / / 15.06.2005
Цитата: SnowLeo
Цитата: mfender
Вопрос: а зачем тут регулярные выражения? Небо греть?

Так проще:



Откуда класс? Неужели на шару написал :) ?



нет, вот сидел рылся на phpclasses специально для топикстартера :D

43K
20 декабря 2012 года
hdma
25 / / 31.12.2011
Респект, господа!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог