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 :: Регулярные выражения не могу составить

 PHP.SU

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


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

> Без описания
strengerst
Отправлено: 02 Июля, 2012 - 20:31:44
Post Id


Частый гость


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


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




Есть массив с такими данными
PHP:
скопировать код в буфер обмена
  1. [0] => font-size:14px">7813 02
  2. Размер:42,44,46 [1] => font-size:14px">7813 09
  3. Размер:42-44;46-48; [2] => font-size:14px">7813 11
  4. Размер:42-46 [3] => font-size:14px">7813 08
  5. Размер:42,44,46

Мне нужно из этого всего оставить только
PHP:
скопировать код в буфер обмена
  1. [0] => 42,44,46 [1] =>42-44;46-48; [2] =>42-46 [3] =>
  2. 42,44,46
Делал так:
PHP:
скопировать код в буфер обмена
  1. $vergeniya[]=preg_replace('/(font-size:14px">)[0-9]{4}[\s]*[0-9]{2,3}[\s]*/','',$nimy[$i]);

получилось только так:
PHP:
скопировать код в буфер обмена
  1. [0] =>
  2. Размер:42,44,46 [1] =>
  3. Размер:42-44;46-48; [2] =>
  4. Размер:42-46 [3] =>
  5. Размер:42,44,46
И как я выражение не переделывал ;) лучше не получается.

(Отредактировано автором: 02 Июля, 2012 - 20:33:19)

 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 21:21:21
Post Id



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


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


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




Вы уже создавали подобную тему и Вам накидали кучу ответов.
И, кстать, Вы почему представляете массив именно так:

[0] => font-size:14px">7813 02
Размер:42,44,46 [1] => font-size:14px">7813 09
Размер:42-44;46-48; [2] => font-size:14px">7813 11
Размер:42-46 [3] => font-size:14px">7813 08
Размер:42,44,46

а ни так, на пример:

[0] => font-size:14px">7813 02 Размер:42,44,46
[1] => font-size:14px">7813 09 Размер:42-44;46-48;
[2] => font-size:14px">7813 11 Размер:42-46
[3] => font-size:14px">7813 08 Размер:42,44,46

Неужели Вам удобно читать?

(Отредактировано автором: 02 Июля, 2012 - 21:31:05)

 
 Top
Toxa
Отправлено: 02 Июля, 2012 - 21:24:30
Post Id



Посетитель


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


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

[+]




-----
Удобный сервис для хранения файлов
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 21:28:38
Post Id



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


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


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




(Отредактировано автором: 02 Июля, 2012 - 21:29:28)

 
 Top
strengerst
Отправлено: 02 Июля, 2012 - 21:44:07
Post Id


Частый гость


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


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




да знаю что тема создовалась и не раз, но что мне остаеться если самому не получается, вот и обращаюсь по несколько раз за помощью, регулярные вроде бы все о них уже прочитал пытаюсь делать а не выходит . Уж извините за доставучесть.
(Добавление)
armancho7777777 пишет:




Не получается так, выводит все данные.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 22:12:31
Post Id



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


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


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




Точнее так:

(Отредактировано автором: 02 Июля, 2012 - 22:19:19)

 
 Top
strengerst
Отправлено: 02 Июля, 2012 - 22:18:01
Post Id


Частый гость


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


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




Ну вот как так? Я часами выдумывал где чего ставит в две строки выходила, а вы за 5 минут управились.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 22:19:32
Post Id



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


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


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




Я так понимаю, Вы это всё в цикле делаете?
Тогда лучше использовать array_map():
PHP:
скопировать код в буфер обмена
  1.  
  2. function callback($el)
  3. {
  4.     return trim(preg_replace('/[^:]+:/', '', $el));    
  5. }
  6.  
  7.  
  8. $arr = array(
  9.     'font-size:14px">7813 02 Размер:42,44,46',
  10.     'font-size:14px">7813 09 Размер:42-44;46-48;',
  11.     'font-size:14px">7813 11 Размер:42-46',
  12.     'font-size:14px">7813 08 Размер:42,44,46'
  13. );
  14.  
  15.  
  16. $arr = array_map('callback', $arr);
  17.  
 
 Top
strengerst
Отправлено: 02 Июля, 2012 - 22:20:26
Post Id


Частый гость


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


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




Да у меня и так получилось я только регулярное выраженияе ваше подставил.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 22:22:29
Post Id



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


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


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




strengerst пишет:
Ну вот как так? Я часами выдумывал где чего ставит в две строки выходила, а вы за 5 минут управились.

Смотрим строки, анализируем.
В данном случае надо было вырезать всё то, что шло до последнего знака двоеточия + он сам. Ну вот и составляем шаблон:
вырезать всё, где нет знака двоеточия и так же его самого.
(Добавление)
strengerst пишет:
Да у меня и так получилось

В Вашем случае целесообразнее использовать array_map()
 
 Top
strengerst
Отправлено: 02 Июля, 2012 - 22:37:50
Post Id


Частый гость


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


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




А читал что крышка ^ означает все кроме, и расценивал выражения как найти все что не двоеточие - [^:] ну только до второго двоеточия.)
(Добавление)
Не ну все правильно, но просто так логически расуждать с выражениями, это нужны месяцы опыта.......
(Добавление)
Буду практиковатся, еще раз спасибо за помощь.)))))))))))

(Отредактировано автором: 02 Июля, 2012 - 22:38:28)

 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Июля, 2012 - 23:26:06
Post Id



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


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


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




strengerst пишет:
ну только до второго двоеточия

Это если поик не жадный (модификатор U).
По умолчанию жадный.
strengerst пишет:
спасибо за помощь

Не за что.
 
 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