Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите создать рег.рыражение для: 20110701.809MamaMia(S22)#15?

 PHP.SU

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


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

> Описание: Помогите с регулярным выражением
МикельССС
Отправлено: 12 Сентября, 2011 - 08:50:57
Post Id


Новичок


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


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




Друзья! Я уже просто взорвал себе мозг Не понял в создании регулярного выражения для $text = "20110701809MamaMia(S22)#15"; // Help me!

0) Идея в сл - нужно все цифры ДО MamaMia - убрать, оставить только MamaMia(S22)#15!

1) При чём: в 20110701809: 809, 810, 1231, 2456, 4678...- последнее число может менятся как число (т.е. количество знаков может менятся - но это есть только цифры)

2) Есчё: MamaMia(S22)#1 - тоже может менятся, как PapaMia(S32)#24, XzzzMmmmmm(G786)#356... - фраза начинается тут только с англ. Букв. с маленькой или боольшой...

Я бился, бился, бился, бился об скобки и закарючки - и ничего Array(); Что такое?

Пока тупо сделал так: $newtext = substr_replace($text, '', 0, 11); // Но это не выход, ведь знаков может быть и больше, и меньше

Я студент, и времени нет. Я почитал, почитал о рег.выр, пробую ([\w]) - как описано в спр. - и.... Огорчение Помогите, слёзно прошу... Не могу отпарсить строчку...
 
 Top
LIME
Отправлено: 12 Сентября, 2011 - 09:02:32
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




preg_replace ("#^([\d\.]+)#",'',$text,1);
перевожу
меняются только цифры \d которые идут в начале ^ строки (добавил точку как разделитель сразу не заметил ее в названии темы \.)
4ый аргумент это лимит замен (на всякий случай, можно убрать его итак есть условие нахождения в начале строки)
(Добавление)
кстати вопрос
если оставить лимит это ведь должно ускорить регулярку?

(Отредактировано автором: 12 Сентября, 2011 - 12:27:57)

 
 Top
МикельССС
Отправлено: 12 Сентября, 2011 - 09:08:10
Post Id


Новичок


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


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




Видимо какой-то мудрец придумал регулярные выражения. Думаю пойти по пути: preg_match('/(\S+)@([a-z0-9.]+)/is', "Привет от somebody@mail.ru!", $p); // Имя хоста будет в $p[2], а имя ящика (до @) - в $p[1]. echo "В тексте найдено: ящик - $p[1], хост - $p[2]";
Но пока не знаю как! Люди, помогите. А я вам дам взамен (то что написал (переделал) сам) PING средствами PHP! Причём: HTTP, HTTPS, IP - делал прямо под CRON, берите, только ПОМОГИТЕ мне с регулярными $text : Пинг на PHP (с обходом сертификата SSL)

(Отредактировано автором: 12 Сентября, 2011 - 09:08:34)

 
 Top
tsoi85
Отправлено: 12 Сентября, 2011 - 09:16:35
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




Может подойдёт.
PHP:
скопировать код в буфер обмена
  1. $str = "20110701809MamaMia(S22)#15";
  2. preg_match("/([\d]+)([a-z0-9\(\)#]+)/i", $str, $r);
  3. echo $r[2];
  4.  
 
 Top
МикельССС
Отправлено: 12 Сентября, 2011 - 09:20:37
Post Id


Новичок


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


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




LIME пишет:
preg_replace ("#^\d#",'',$text,1);
перевожу
меняются только цифры \d которые идут в начале ^ строки
4ый аргумент это лимит замен (на всякий случай, можно убрать его итак есть условие нахождения в начале строки)
(Добавление)
кстати вопрос
если оставить лимит это ведь должно ускорить регулярку?

Да, так и хочется: LIMIT=1 быстрее работает даже в MySQL.
Сейчас попробую подставить Вашу регулярную выражению...
Кстати, пока пробую, обяснтите, што за такое: #-? ^-начало строки, \d-только цифры, #-? мне тупому - почему так ## ?
(Добавление)
tsoi85 пишет:
Может подойдёт.
PHP:
скопировать код в буфер обмена
  1. $str = "20110701809MamaMia(S22)#15";
  2. preg_match("/([\d]+)([a-z0-9\(\)#]+)/i", $str, $r);
  3. echo $r[2];
  4.  

Вы просто КОСМИЧЕСКИЙ ЧЕЛОВЕК - СПАСИБО! Офигенно помогли! УРАААААААааа! Радость Всё работает.... СПАСИБО!

PS: У меня просто с этой лабудой полная беда: /([\d]+)([a-z0-9\(\)#]+/i
 
 Top
LIME
Отправлено: 12 Сентября, 2011 - 10:00:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




PHP:
скопировать код в буфер обмена
  1. echo $text=preg_replace ("#^([\d\.]+)#",'',$text,1);

а это не подходит чтоли?
проверьте пжлст
очень интересно
(Добавление)
мне кажется выражение tsoi85 избыточно
(Добавление)
вообще подход избыточен

(Отредактировано автором: 12 Сентября, 2011 - 12:28:20)

 
 Top
f111
Отправлено: 12 Сентября, 2011 - 13:41:42
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $str = "20110701809MamaMia(S22)#15";
  2. preg_match("/[a-z]+\(\w+\)#\d+/i", $str, $r);
  3. echo $r[0];

(Добавление)
LIME пишет:
а это не подходит чтоли?
подходит
может даже быстрее будет чем матч

(Отредактировано автором: 12 Сентября, 2011 - 13:46:57)

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB