Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2016, 18:32   #1
artur4ek94
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 11
По умолчанию Не совсем корректно работает регулярное выражение

Доброго времени суток!
Есть регулярное выражение которое проверяет файл следующей структуры (во вложении):
PHP код:
foreach(file('file.txt') as $k=>$v){
        echo (!
preg_match("~^(?:(?:[0-9]|[12][0-9]|3[0-1])\.
                           (?:0[0-9]|1[0-2])\.
                           (?:\\d{2})/
                           (?:0?[0-9]|1[0-9]|2[0-3])\:
                           (?:[0-5][0-9])/
                           \\w+\\s*)$~x"
,$v)
             ) ? 
"Ошибка в строке $k " $v;
    } 
Как сделать так чтобы он распознавал русские символы и укр символы в
3й колонке каждой строки?
Изображения
Тип файла: png Снимок.PNG (7.3 Кб, 36 просмотров)
artur4ek94 вне форума Ответить с цитированием
Старый 30.10.2016, 01:24   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

PHP код:
<?php

    $string 
"This is супер АБВГД string по русски";

    
//preg_match_all("/[A-Za-z]*/si", $string, $m);
    
preg_match_all("/([А-Я]*)/siu"$string$m);

    foreach(
$m as $v){
        if(
count($v) == 0) continue;
        echo 
"[".count($v)."]---> \n";
        foreach(
$v as $v_v){
            if(
strlen($v_v) == 0) continue;

            echo 
"\t $v_v \n";
        }
    }

?>
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 30.10.2016, 04:01   #3
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

pompiduskus, а как с буквой ё?

artur4ek94, разбивайте в массив по '/' и работайте с элементами массива - регулярки будут намного проще и понятнее.
predefined вне форума Ответить с цитированием
Старый 30.10.2016, 14:27   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Не нужно изобретать велосипед ! Все уже сделано до нас.

Код:
 <?php

    $string = "This is супер АБВГД string по русски [ййййй] [ёёё]  ";

    preg_match_all("/([а-яёй]*)/siu", $string, $m);

    foreach($m as $v){
        if(count($v) == 0) continue;
        echo "[".count($v)."]---> \n";
        foreach($v as $v_v){
            if(strlen($v_v) == 0) continue;

            echo "\t $v_v \n";
        }
    }

?>
Флаги preg_match ("//gisu");

s: если он стоит, то "." выбирает все символы, даже пробел и перенос строки.
i: Независит от регистра "й" == "Й"
u: Unicode
g: Global Match, найти всех и вся.

Их больше конечно, кому нужно будет, самй найдет.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 30.10.2016 в 14:34.
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение nibufep Общие вопросы Delphi 2 20.12.2014 03:26
XE2. Не работает регулярное выражение из коробки Человек_Борща Общие вопросы Delphi 0 09.02.2014 14:38
регулярное выражение Alexandr555 Общие вопросы Delphi 3 07.04.2012 23:18
Не совсем корректно работает программа alexchromets Помощь студентам 2 26.12.2010 19:45
Регулярное выражение! Evgen1984 Общие вопросы .NET 4 14.09.2010 19:44