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
Форумы портала PHP.SU :: Версия для печати :: Регулярные выражения не могу составить
Форумы портала PHP.SU » » Вопросы новичков » Регулярные выражения не могу составить

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

1. strengerst - 02 Июля, 2012 - 20:31:44 - перейти к сообщению
Есть массив с такими данными
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
И как я выражение не переделывал ;) лучше не получается.
2. armancho7777777 - 02 Июля, 2012 - 21:21:21 - перейти к сообщению
Вы уже создавали подобную тему и Вам накидали кучу ответов.
И, кстать, Вы почему представляете массив именно так:

[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

Неужели Вам удобно читать?
3. Toxa - 02 Июля, 2012 - 21:24:30 - перейти к сообщению
4. armancho7777777 - 02 Июля, 2012 - 21:28:38 - перейти к сообщению
5. strengerst - 02 Июля, 2012 - 21:44:07 - перейти к сообщению
да знаю что тема создовалась и не раз, но что мне остаеться если самому не получается, вот и обращаюсь по несколько раз за помощью, регулярные вроде бы все о них уже прочитал пытаюсь делать а не выходит . Уж извините за доставучесть.
(Добавление)
armancho7777777 пишет:




Не получается так, выводит все данные.
6. armancho7777777 - 02 Июля, 2012 - 22:12:31 - перейти к сообщению
Точнее так:
7. strengerst - 02 Июля, 2012 - 22:18:01 - перейти к сообщению
Ну вот как так? Я часами выдумывал где чего ставит в две строки выходила, а вы за 5 минут управились.
8. armancho7777777 - 02 Июля, 2012 - 22:19:32 - перейти к сообщению
Я так понимаю, Вы это всё в цикле делаете?
Тогда лучше использовать 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.  
9. strengerst - 02 Июля, 2012 - 22:20:26 - перейти к сообщению
Да у меня и так получилось я только регулярное выраженияе ваше подставил.
10. armancho7777777 - 02 Июля, 2012 - 22:22:29 - перейти к сообщению
strengerst пишет:
Ну вот как так? Я часами выдумывал где чего ставит в две строки выходила, а вы за 5 минут управились.

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

В Вашем случае целесообразнее использовать array_map()
11. strengerst - 02 Июля, 2012 - 22:37:50 - перейти к сообщению
А читал что крышка ^ означает все кроме, и расценивал выражения как найти все что не двоеточие - [^:] ну только до второго двоеточия.)
(Добавление)
Не ну все правильно, но просто так логически расуждать с выражениями, это нужны месяцы опыта.......
(Добавление)
Буду практиковатся, еще раз спасибо за помощь.)))))))))))
12. armancho7777777 - 02 Июля, 2012 - 23:26:06 - перейти к сообщению
strengerst пишет:
ну только до второго двоеточия

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

Не за что.

 

Powered by ExBB FM 1.0 RC1