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. foozzi - 20 Февраля, 2013 - 20:13:29 - перейти к сообщению
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
2. Мелкий - 20 Февраля, 2013 - 20:49:32 - перейти к сообщению
0) прочитайте сообщение об ошибке
1) посмотрите, что оказалось в переменной
2) посмотрите в мануале, что возвращает preg_match_all
3) предугадывая последующий вопрос - посмотрите, какие аргументы необходимы preg_replace
3. foozzi - 20 Февраля, 2013 - 20:59:21 - перейти к сообщению
Мелкий пишет:
0) прочитайте сообщение об ошибке
1) посмотрите, что оказалось в переменной
2) посмотрите в мануале, что возвращает preg_match_all
3) предугадывая последующий вопрос - посмотрите, какие аргументы необходимы preg_replace

preg_match_all возвращает массив, все верно, я столько способов перепробовал, все равно результат нулевой, preg_replace я пропустил элемент, на что заменять, так как не понял суть работы array_map с пользовательской ф-ей.
Даже не знаю уже что пробовать...
4. DelphinPRO - 20 Февраля, 2013 - 21:21:52 - перейти к сообщению
foozzi пишет:
preg_match_all возвращает массив

вы все-таки посмотрите описание этой функции
5. foozzi - 20 Февраля, 2013 - 21:24:42 - перейти к сообщению
DelphinPRO пишет:
foozzi пишет:
preg_match_all возвращает массив

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

теперь понял, но я теперь совсем запутался, как из текста выбрать все слова с символом # а потом регуляркой убрать из этих слов все символы кроме букв и цифр и поместить в массив для дальнейшей работы в цикле ?
6. Мелкий - 20 Февраля, 2013 - 21:47:29 - перейти к сообщению
Отвлекитесь, поспите.
Прочитайте описание третьего параметра preg_match_all и почему оный у вас в коде носит столь явное название о своём предназначении.

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

array_map вызывает для каждого элемента массива указанную функцию и передаёт в функцию обычным параметром значение обрабатываемого элемента.
7. gefard - 20 Февраля, 2013 - 21:49:05 - перейти к сообщению
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
8. DelphinPRO - 20 Февраля, 2013 - 22:33:07 - перейти к сообщению
gefard пишет:
а может лучше так
текст в массив по словам сначала
не лучше. к чему сложности, когда все решается одной регуляркой..
(Добавление)
foozzi пишет:
как из текста выбрать все слова с символом #

мы же кажется уже выяснили это здесь: http://forum.php.su/topic.php?fo...1&topic=9163
9. foozzi - 20 Февраля, 2013 - 23:36:25 - перейти к сообщению
DelphinPRO пишет:
gefard пишет:
а может лучше так
текст в массив по словам сначала
не лучше. к чему сложности, когда все решается одной регуляркой..
(Добавление)
foozzi пишет:
как из текста выбрать все слова с символом #

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

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

 

Powered by ExBB FM 1.0 RC1