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 » PHP » Регулярные выражения » Разбить текстовую строку на несколько частей

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

1. moroz11 - 07 Сентября, 2014 - 22:11:49 - перейти к сообщению
Помогите, пожалуйста.

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

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

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

Разделители между словами принимать пробел.
2. avtor.fox - 07 Сентября, 2014 - 22:31:42 - перейти к сообщению
3. dcc0 - 07 Сентября, 2014 - 22:49:38 - перейти к сообщению
Я не стал искать легких путей:
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. ?>
4. avtor.fox - 07 Сентября, 2014 - 23:43:34 - перейти к сообщению
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));
5. dcc0 - 08 Сентября, 2014 - 08:59:57 - перейти к сообщению
Автор не говорил, что ему на выходе нужен вложенный массив.
6. avtor.fox - 08 Сентября, 2014 - 09:37:54 - перейти к сообщению
dcc0, проще наговнокодить, чем выдернуть значения из массива?
7. dcc0 - 08 Сентября, 2014 - 09:53:53 - перейти к сообщению
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. ?>
8. avtor.fox - 08 Сентября, 2014 - 11:04:10 - перейти к сообщению
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);


. (Отобразить)
9. dcc0 - 08 Сентября, 2014 - 11:39:53 - перейти к сообщению
Если строка будет содержать два слова, будет два массива, один пустой.
И что в это страшного?

Вывод:

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] => аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА аМаДаА ) )
10. avtor.fox - 08 Сентября, 2014 - 12:32:11 - перейти к сообщению
dcc0, Вы адекватны, или Вам кажется? Я написал про свой второй пример, а не про Ваш. И если автор будет не в силах разобрать "как сие получилось", то это уже его проблемы, так как документации в нете жопой жуй.

Запустите второй пример, вот Вам две строки, если многомерный массив не нравится. Ишь.
11. dcc0 - 08 Сентября, 2014 - 12:47:48 - перейти к сообщению
avtor.fox пишет:
dcc0, Вы адекватны, или Вам кажется?

Во всяком случае хамить не пытаюсь.
12. avtor.fox - 08 Сентября, 2014 - 12:53:21 - перейти к сообщению

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

Это лучше, чем давать глупые советы.
13. moroz11 - 12 Сентября, 2014 - 05:34:56 - перейти к сообщению
Текста не много. С помощью explode разбил и выбрал нужное.

Всем спасибо большое за помощь!

 

Powered by ExBB FM 1.0 RC1