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

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

1. Maskca - 26 Ноября, 2011 - 23:54:42 - перейти к сообщению
Здравствуйте, я разбиваю текст в массив функцией

А мне нужно чтобы текст разбивался и в случае если

Как можно объединить эти две функции?
(Добавление)
Я уже и так пробивал:
PHP:
скопировать код в буфер обмена
  1. $text = str_replace("\n\n", "\n", $text);
  2. $array = explode("\n",$text)

Но почему то не работает
2. Bio man - 27 Ноября, 2011 - 02:14:05 - перейти к сообщению
$text = nl2br($text);//вставляем перед каждым \n <br />
$array = explode('<br />', $text);
foreach($array as $val) {
$array[] = trim($val);// удаляем все пробелы, табы, переносы строк итд
}
толко позаботьтесь, что бы брэйк соответствовал бы стандарту xhtml (<br />)
3. Ch_chov - 27 Ноября, 2011 - 05:55:00 - перейти к сообщению
preg_split
4. velidan - 03 Декабря, 2011 - 11:20:09 - перейти к сообщению
Добрый день всем. Пишу здесь потому что вопросы похожие немного, а новую тему не хочется создавать (их итак много)

Во общем читаю книгу по пхп и там идут задания после разделов. Столкнулся с таким : что мол вызвать в браузер содержимое диска (т.е. обычный dir) потом из полученной строки извлечь имена файлов и папок в разные массивы.

получил вот такую строку:
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = ".. 25.11.2011 17:58 227 .htaccess 02.12.2011 17:35 34 blablabla.php 11.11.2011 22:09 4я812 body.php 13.11.2011 12:14
  3. config 21.11.2011 17:49
  4. controllers 14.11.2011 16:27 404 db_connection.php 10.11.2011 20:51 108 default.php 10.11.2011 20:51 16 footer.php 19.11.2011 20:09 792 header.php 18.11.2011 20:01
  5. img 29.11.2011 19:20 769 index.php 21.11.2011 17:55
  6. models 10.11.2011 23:14
  7. mvc 20.11.2011 17:33 699 obrabotka.php 30.11.2011 16:43 8я591 style.css 23.11.2011 16:35 554 tesst.php 30.10.2011 21:11 95я326 Untitled-1.php 29.11.2011 19:14
  8. views" ;
  9.  


первой приходит в голову ф-ция explode - но здесь нет разделителей (и без понятия что делать) потом strtok - но опять таки нет разделителей.
есть идея что залезть в сорс код, скопировать человеческий вид массива который возвращается dir и воспользоваться ф-цией которая порежет его начиная с определенной позиции в символе (т.е. допустим с 20 позиции вырезать слово и перепрыгнуть на след строку) но оно будет без разбора резать и каталоги и имена файлов. Хотя даже не знаю какая ф-ция подходит для этого (как вариант substr - но не знаю как сделать чтобы в разные массивы шло)

пробовал еще так $str = str_word_count($str, 2) ;
но она возвращает просто слова и позиции (т.е. разделяет имена файлов и расширение на разные слова)

Не знаю что делать, обидно очень, а пропускать задание не хочу. Подскажите пожалуйста что можно сделать, если не хочется тратить энергию на написание поста то хоть намекните в сторону какой функции надо идти.

Заранее спасибо.
П.С, забыл сказать, регулярными выражениями пользоваться нельзя т.к. они в след разделе.
5. DeepVarvar - 03 Декабря, 2011 - 11:25:35 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $files = array();
  2. $dirs = array();
  3. foreach (glob("/path/do/dir/*") as $item) {
  4.   if (is_dir($item)) $dirs[] = $item;
  5.   else $files[] = $item;
  6.   }
  7.  
  8. var_dump($dirs,$files);
6. Bio man - 03 Декабря, 2011 - 11:36:38 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $scan = scandir('.');
  2. $dirs = array();
  3. $files = array();
  4. foreach($scan as $item) {
  5.     if($item == '.' || $item == '..') continue;
  6.     if(is_dir($item)) {
  7.        $dirs[] = $item;
  8.        continue;
  9.     }
  10.     $files[] = $item;
  11. }
7. velidan - 03 Декабря, 2011 - 17:39:23 - перейти к сообщению
Спасибо огромное вам. Очень помогли.
(Правда совсем не думал в таком направлении, ожидалось что можно обойтись теми функциями что описываются в разделе посвященному обработке строк. Не предполагал совместить циклы и это.
Во общем неудобно как-то вышло, что потревожил (знаю как программисты не любят когда их спрашивают очевидные вещи). Так что еще раз извините и благодарю вас.

П.С. добавить "спасибо" не разрешает форум. У меня слишком мало сообщений.
8. Bio man - 03 Декабря, 2011 - 19:13:28 - перейти к сообщению
velidan Ха-ха это еще не глупый вопрос (по сравнению с теми, которые бывают задают)! и это раздел для вопросов новичков, не важно какой степени глупости вопросы Подмигивание и если бы не задавали глупых вопросов мы бы умерли со скуки Хм

 

Powered by ExBB FM 1.0 RC1