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 - 18:27:41
Post Id


Частый гость


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


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




Есть массив с данными:
PHP:
скопировать код в буфер обмена
  1. [1] => )130 грн[2] =>  105 грн[3] =>105 грн[4] => �105 грн
  2.    [5] => �)80 грн;
С помощью регулярных выражений хочу получить массив с одними цыфрами то:
PHP:
скопировать код в буфер обмена
  1. [1] =>130[2] =>105[3] =>105[4] =>105[5] =>80;
Делаю так:
PHP:
скопировать код в буфер обмена
  1. $znachenie[]=preg_replace('/.*(\d{2,4}).*/','$1',$dannue[$i]);
- это все в цыкле а у меня получаеться:
PHP:
скопировать код в буфер обмена
  1. [1] => 30[2] => 05[3] => 05[4] => 05[5] =>80;

У меня съедает первый символ ходя в выражении я пишу найти от 2 в ключительно до 4 цыфр. Почему так разъясните, и как написать правильно.
(Добавление)
А если ставлю - находит по одному символу.
По чему так, должно ж находить как от 1 до 3символов а ноходит 1цыфру хотя рядом стоят еще 2

(Отредактировано автором: 02 Сентября, 2012 - 18:28:31)

 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Сентября, 2012 - 18:36:13
Post Id



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


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


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




Пример 1:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ar = array('253 гр', '215 гр', '25 гр', '655 гр');
  3.  
  4. function collback($v)
  5. {
  6.         return filter_var($v, FILTER_SANITIZE_NUMBER_INT);
  7. }
  8.  
  9. $ar = array_map('collback', $ar);
  10.  
  11. print_r($ar);
  12.  


Пример 2:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ar = array('253 гр', '215 гр', '25 гр', '655 гр');
  3.  
  4. function collback($v)
  5. {
  6.         preg_match('~[\d]+~', $v, $math);
  7.         return $math[0];
  8. }
  9.  
  10. $ar = array_map('collback', $ar);
  11.  
  12. print_r($ar);
  13.  

Пример 3:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ar = array('253 гр', '215 гр', '25 гр', '655 гр');
  3.  
  4. function collback($v)
  5. {
  6.         return preg_replace('~[\D]*~', '', $v);
  7. }
  8.  
  9. $ar = array_map('collback', $ar);
  10.  
  11. print_r($ar);
  12.  

(Отредактировано автором: 02 Сентября, 2012 - 19:03:18)

 
 Top
strengerst
Отправлено: 02 Сентября, 2012 - 19:07:51
Post Id


Частый гость


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


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




Объясни пожалуйста ~ - что это за символ в регулярном выражении, не где не могу найти описания.
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Сентября, 2012 - 19:11:12
Post Id



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


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


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




Просто ограничитель.
(Добавление)
В Вашем примере используется слешь.
 
 Top
strengerst
Отправлено: 02 Сентября, 2012 - 19:27:58
Post Id


Частый гость


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


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




Спасибо, я пол дня потратил думал как это выражения написать а вы та просто '~[\D]*~';
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Сентября, 2012 - 19:31:27
Post Id



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


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


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




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