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]   

> Без описания
moroz11
Отправлено: 07 Сентября, 2014 - 22:11:49
Post Id


Новичок


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


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




Помогите, пожалуйста.

$text - переменная содержащая текст (с запятыми, цифрами и другими возможными символами)

Нужно разбить ее и получить 2 переменные. $text1 и $text2

$text1 - содержит первые 2 слова из $text
$text2 - содержит все остальные слова

Разделители между словами принимать пробел.
 
 Top
avtor.fox
Отправлено: 07 Сентября, 2014 - 22:31:42
Post Id



Постоянный участник


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


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




 
 Top
dcc0
Отправлено: 07 Сентября, 2014 - 22:49:38
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Я не стал искать легких путей:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $text ="Hello Friend I am just string";
  3.  $str = preg_split ('/\s/', $text);
  4.    $text1="$str[0] $str[1]";
  5.   echo  $text1;
  6.   echo '<br/>';
  7.  foreach($str as $k =>  $val) {
  8. if($k>1) {
  9. $text2.=" $val ";
  10.  }
  11. }
  12.  echo $text2;
  13. ?>

(Отредактировано автором: 07 Сентября, 2014 - 22:51:49)



-----
Март 2021. Бросил программирование
 
 Top
avtor.fox
Отправлено: 07 Сентября, 2014 - 23:43:34
Post Id



Постоянный участник


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


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




PHP:
скопировать код в буфер обмена
  1. $sText = "dcc0, мда мда мда мда мда мда мда мда мда мда";
  2.  
  3. function explodeCustom($sString, $iLength = 2)
  4. {
  5.     return array_chunk(
  6.         explode(' ', $sString, $iLength + 1),
  7.         $iLength
  8.     );
  9. }
  10.  
  11. print_r(explodeCustom($sText));
 
 Top
dcc0
Отправлено: 08 Сентября, 2014 - 08:59:57
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Автор не говорил, что ему на выходе нужен вложенный массив.

(Отредактировано автором: 08 Сентября, 2014 - 09:43:58)



-----
Март 2021. Бросил программирование
 
 Top
avtor.fox
Отправлено: 08 Сентября, 2014 - 09:37:54
Post Id



Постоянный участник


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


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




dcc0, проще наговнокодить, чем выдернуть значения из массива?
 
 Top
dcc0
Отправлено: 08 Сентября, 2014 - 09:53:53
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




http://www[dot]tutorialarena[dot]com/php[dot][dot][dot]ing-to-array.php



Зачем вложенный массив для задачи, о которой вы знаете в самых общих чертах.

На мой взгляд этот вариант будет интереснее:

(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $str="Any suggestions on better way to remove the 2 words from a string?";
  3.  
  4.   $string2=explode(" ", $str);
  5. $string1=array($string2[0], $string2[1]);
  6. print_r($string1);
  7. ?>
  8. <br/>
  9. <?PHP
  10. array_shift($string2);
  11.  array_shift($string2);
  12. print_r($string2);
  13. ?>

(Отредактировано автором: 08 Сентября, 2014 - 10:47:02)



-----
Март 2021. Бросил программирование
 
 Top
avtor.fox
Отправлено: 08 Сентября, 2014 - 11:04:10
Post Id



Постоянный участник


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


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




PHP:
скопировать код в буфер обмена
  1. $sString = "dcc0, чем интереснее? ещё одним говнокодом?";
  2. $rgSplit = explode(' ', $sString, 3);
  3. $sStringEnd = array_pop($rgSplit);
  4. $sStringStart = join(' ', $rgSplit);
  5.  
  6. var_dump($sStringStart);
  7. var_dump($sStringEnd);


. (Отобразить)
 
 Top
dcc0
Отправлено: 08 Сентября, 2014 - 11:39:53
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Если строка будет содержать два слова, будет два массива, один пустой.
И что в это страшного?

Вывод:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Array ( [0] => Any [1] => suggestions )
  3. Array ( [0] => )


Вывод, где много слов
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => Any [1] => suggestions )
  2. Array ( [0] => on [1] => better [2] => way [3] => to [4] => remove [5] => the [6] => 2 [7] => words [8] => from [9] => a [10] => string? )


С учетом того, что автор задает такой вопрос, не берусь утверждать, но предположу, что такой вывод после работы вашего скрипта породит еще вопросы:

PHP:
скопировать код в буфер обмена
  1. Array ( [0] => Array ( [0] => dcc0, [1] => аМаДаА ) [1] => Array ( [0] => аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА ) )


-----
Март 2021. Бросил программирование
 
 Top
avtor.fox
Отправлено: 08 Сентября, 2014 - 12:32:11
Post Id



Постоянный участник


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


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




dcc0, Вы адекватны, или Вам кажется? Я написал про свой второй пример, а не про Ваш. И если автор будет не в силах разобрать "как сие получилось", то это уже его проблемы, так как документации в нете жопой жуй.

Запустите второй пример, вот Вам две строки, если многомерный массив не нравится. Ишь.
 
 Top
dcc0
Отправлено: 08 Сентября, 2014 - 12:47:48
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




avtor.fox пишет:
dcc0, Вы адекватны, или Вам кажется?

Во всяком случае хамить не пытаюсь.


-----
Март 2021. Бросил программирование
 
 Top
avtor.fox
Отправлено: 08 Сентября, 2014 - 12:53:21
Post Id



Постоянный участник


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


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





dcc0 пишет:
Во всяком случае хамить не пытаюсь.

Это лучше, чем давать глупые советы.
 
 Top
moroz11
Отправлено: 12 Сентября, 2014 - 05:34:56
Post Id


Новичок


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


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




Текста не много. С помощью explode разбил и выбрал нужное.

Всем спасибо большое за помощь!
 
 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