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]   

> Без описания
foozzi
Отправлено: 20 Февраля, 2013 - 20:13:29
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $text = '#tag! tag #tag2_'; //текст
  3.  
  4. $hasgtag = preg_match_all('/#[^\s]+/', $text, $output); // из текста выбирает только слова с символом #
  5. function replace(){  // ф-я для array_map
  6.      return preg_replace("/[^\\w\\x7F-\\xFF\\s]+/s", "");
  7. }
  8.  
  9. $new_arr = array_map("replace", $hasgtag[0]); // чистим все ненужные символы во всем массиве регуляркой и возвращаем новый массив обработаный
  10.  
  11. var_dump($new_arr[0]);
  12.  

получаю
Warning: array_map() [function.array-map]: Argument #2 should be an array in
NULL


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Мелкий Супермодератор
Отправлено: 20 Февраля, 2013 - 20:49:32
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




0) прочитайте сообщение об ошибке
1) посмотрите, что оказалось в переменной
2) посмотрите в мануале, что возвращает preg_match_all
3) предугадывая последующий вопрос - посмотрите, какие аргументы необходимы preg_replace


-----
PostgreSQL DBA
 
 Top
foozzi
Отправлено: 20 Февраля, 2013 - 20:59:21
Post Id



Посетитель


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


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




Мелкий пишет:
0) прочитайте сообщение об ошибке
1) посмотрите, что оказалось в переменной
2) посмотрите в мануале, что возвращает preg_match_all
3) предугадывая последующий вопрос - посмотрите, какие аргументы необходимы preg_replace

preg_match_all возвращает массив, все верно, я столько способов перепробовал, все равно результат нулевой, preg_replace я пропустил элемент, на что заменять, так как не понял суть работы array_map с пользовательской ф-ей.
Даже не знаю уже что пробовать...


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
DelphinPRO
Отправлено: 20 Февраля, 2013 - 21:21:52
Post Id



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


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


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




foozzi пишет:
preg_match_all возвращает массив

вы все-таки посмотрите описание этой функции


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
foozzi
Отправлено: 20 Февраля, 2013 - 21:24:42
Post Id



Посетитель


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


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




DelphinPRO пишет:
foozzi пишет:
preg_match_all возвращает массив

вы все-таки посмотрите описание этой функции

теперь понял, но я теперь совсем запутался, как из текста выбрать все слова с символом # а потом регуляркой убрать из этих слов все символы кроме букв и цифр и поместить в массив для дальнейшей работы в цикле ?


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Мелкий Супермодератор
Отправлено: 20 Февраля, 2013 - 21:47:29
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Отвлекитесь, поспите.
Прочитайте описание третьего параметра preg_match_all и почему оный у вас в коде носит столь явное название о своём предназначении.

foozzi пишет:
не понял суть работы array_map с пользовательской ф-ей.

array_map вызывает для каждого элемента массива указанную функцию и передаёт в функцию обычным параметром значение обрабатываемого элемента.


-----
PostgreSQL DBA
 
 Top
gefard
Отправлено: 20 Февраля, 2013 - 21:49:05
Post Id



Гость


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


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




foozzi пишет:
DelphinPRO пишет:
foozzi пишет:
preg_match_all возвращает массив

вы все-таки посмотрите описание этой функции

теперь понял, но я теперь совсем запутался, как из текста выбрать все слова с символом # а потом регуляркой убрать из этих слов все символы кроме букв и цифр и поместить в массив для дальнейшей работы в цикле ?

а может лучше так
текст в массив по словам сначала
$text = explode(" ", trim($text));
$arr1=array()
дальше цикл
foreach($text as $slovo){
если в слове есть #
if (strpbrk($slovo, '#') !== FALSE) {
echo $slovo;
теперь регулярка по удалению прочих символов
и ложим в новый массив
$arr1 .= $slovo;
}
}
на выходе нужный нам массив $arr1
 
 Top
DelphinPRO
Отправлено: 20 Февраля, 2013 - 22:33:07
Post Id



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


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


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




gefard пишет:
а может лучше так
текст в массив по словам сначала
не лучше. к чему сложности, когда все решается одной регуляркой..
(Добавление)
foozzi пишет:
как из текста выбрать все слова с символом #

мы же кажется уже выяснили это здесь: http://forum.php.su/topic.php?fo...1&topic=9163


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
foozzi
Отправлено: 20 Февраля, 2013 - 23:36:25
Post Id



Посетитель


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


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




DelphinPRO пишет:
gefard пишет:
а может лучше так
текст в массив по словам сначала
не лучше. к чему сложности, когда все решается одной регуляркой..
(Добавление)
foozzi пишет:
как из текста выбрать все слова с символом #

мы же кажется уже выяснили это здесь: http://forum.php.su/topic.php?fo...1&topic=9163

там тоже самое что и я тут показываю


-----
90% ошибок находятся в полуметре от монитора...
 
 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