2015-05-27 3 views
0

Эхо $ line_of_text; дает мне «test1 test2 test1 test2» Но как только я использую взрыв, '' он только разделяет строку на 2 части. , в результате он произносит фрагменты [0] = test1test1 и куски [1] = test2test2. Мне нужно, чтобы он разделил его на 4. Спасибо.Взорвать не работает на строку

ОБНОВЛЕНИЕ: Я нашел проблему. Функция, казалось, была в a для каждого цикла. Он побежал дважды. Я узнал об этом, когда я запустил echo $pieces[0].'<br>';. Это дало мне:
Test1 test2
Test1 test2

После некоторого фиксации я получил его на работу, как я предполагалось. Спасибо за быстрые ответы.

public function load_time_period() 
{ 
    $file_handle = fopen($GLOBALS['configfile_time_periods'], "r+"); 

    $i = -1; 
    while (!feof($file_handle)) { 

     $line_of_text = fgets($file_handle); 

     switch ($line_of_text) { 

      case stripos($line_of_text, "define timeperiod") > -1: 
       if (stripos($line_of_text, "define timeperiod") > -1) { 
        $i++; 
        $obj_time_periods[$i] = new nagmon_time_period(); 
       } 
       break; 

      case stripos($line_of_text, "timeperiod_name") > -1: 
       $obj_time_periods[$i]->set_timeperiod_name(trim(str_replace("#", "", str_replace("timeperiod_name", "", $line_of_text)))); 
       break; 

      case stripos($line_of_text, "alias") > -1: 
       $obj_time_periods[$i]->set_alias(trim(str_replace("#", "", str_replace("alias", "", $line_of_text)))); 
       break; 

      case stripos($line_of_text, "weekday") > -1: 
       $obj_time_periods[$i]->set_weekday(trim(str_replace("#", "", str_replace("[weekday]", "", $line_of_text)))); 
       break; 

      case stripos($line_of_text, "exception") > -1: 
       $obj_time_periods[$i]->set_exception(trim(str_replace("#", "", str_replace("[exception]", "", $line_of_text)))); 
       break; 
      case stripos($line_of_text, "exclude") > -1: 
       $obj_time_periods[$i]->set_exclude(trim(str_replace("#", "", str_replace("exclude", "", $line_of_text)))); 
       break; 

      case stripos($line_of_text, " ") > -1: 



       echo htmlentities($line_of_text); 



       $obj_time_periods[$i]->set_variable_command($pieces[0]); 
       $obj_time_periods[$i]->set_variable_value($pieces[1]); 
       break; 

      default: 
       break; 
     } 
    } 
    fclose($file_handle); 
    return $obj_time_periods; 


} 
+4

Может быть, они не все на самом деле символы пробела. –

+0

Вероятно, «echo htmlentities ($ line_of_text);» помогает увидеть больше. – TiMESPLiNTER

+0

опубликуйте содержимое '$ line_of_text' –

ответ

1

Используйте это, чтобы взорвать любой пробел или табуляцию или несколькими пробелами или символами табуляции:

$pieces = preg_split('/\s+/u', trim($line_of_text)); 
print_r($pieces); 
//Array ([0] => test1 [1] => test2 [2] => test1 [3] => test2) 
+0

Это дает мне тот же результат. кусочки [0] = test1test1 и куски [1] = test2test2 – Snekmel

+0

, тогда между тестом1 и test1 не было пробела, а test2 и test2 –

+0

Спасибо за ответ еще раз. Вы хоть представляете, что это может быть? поскольку когда я печатаю полную переменную, она дает мне: test1 test2 test1 test2. Я заметил, что между средним test2 и test1 есть 2 пробела. Может ли это быть проблема? – Snekmel

0

Я уверен, что ошибка происходит раньше. Можете ли вы поделиться своим кодом? Когда я пытаюсь это

$line_of_text = "test1 test2 test1 test2 "; 

$pieces = explode(' ', $line_of_text); 
var_dump($pieces); 

Это дает мне выход

array(5) { 
    [0]=> 
    string(5) "test1" 
    [1]=> 
    string(5) "test2" 
    [2]=> 
    string(5) "test1" 
    [3]=> 
    string(5) "test2" 
    [4]=> 
    string(0) "" 
} 

, который является правильным.

Вы можете попробовать небольшие фрагменты, как это в онлайн-переводчика, например, здесь: http://sandbox.onlinephpfunctions.com/

enter image description here

+0

Спасибо, я обновил код. Это моя полная функция. Он читает конфигурации из текстового файла. – Snekmel