2015-11-11 6 views
1

Я хочу написать код, который импортирует CSV-файл, принимает полезные биты и затем помещает его в базу данных. На данный момент я написал код, который просто выводит его в таблицу, чтобы я мог проверить, все мои значения работают. Все идет нормально! Однако я недоволен тем, как появляется одно из полей моего CSV-файла. Я бы хотел его отредактировать. На данный момент поле выглядит примерно так:Str_replace не работает

Режим: 5; Скорость: скорость mSpeed; Диапазон наклона: полный

Я хочу снять все, кроме режима. Для этого я использую

list($mode) = explode(";", $fixture_options); 

Воспроизводит:

Режим: 5

До сих пор так хорошо! Следующий шаг, чтобы избавиться от «Mode:» Я надеялся, что просто использовать:

$newmode = str_replace("Mode:","", $mode); 

Но это не похоже на работу? Это мой полный код ниже. Без сомнения, это просто!

<?php 

    function Table($name,$value) 
     { 
      echo "<tr><td>$name</td><td>$value</td></tr>"; 
     } 



ini_set('auto_detect_line_endings', TRUE); 
$rows = array_map('str_getcsv', file('test.csv')); 
$header = array_shift($rows); // Strip out the colum headers from the CSV 
$csv = array(); 
foreach ($rows as $row) { 


    /*** Remove all the unwanted Colums **/ 

      unset($row[2]); // Remove Dimmer 
      unset($row[6]); // Remove Lens 
      unset($row[7]); // Remove Hookup 
      unset($row[8]); // Remove Purpose 
      unset($row[9]); // Remove Colour 
      unset($row[10]); // Remove Gobo 
      unset($row[11]); // Remove Focus 
      unset($row[16]); // Remove Lamp Type 
      unset($row[17]); // Remove Offset 
      unset($row[18]); // Remove X 
      unset($row[19]); // Remove Y 
      unset($row[20]); // Remove Z 
      unset($row[21]); // Remove Pan 
      unset($row[22]); // Remove Tilt 
      unset($row[23]); // Remove Spin 
      unset($row[25]); // Remove Notes 
      unset($row[26]); // Remove Footnotes 
      unset($row[28]); // Remove # of colour frames 
      unset($row[29]); // Remove # of lamps 
      unset($row[30]); // Remove Circuit Type 
      unset($row[31]); // Remove Model   
      unset($row[32]); // Remove Cost 
      unset($row[34]); // Remove Console 
      unset($row[35]); // Remove Layer 
      unset($row[36]); // Remove Tag 

     $channel =   $row[0]; 
     $patch =   $row[1]; 
     list($uni, $address) = explode(".", $patch); // we convert the address into univers and address. 
     $spot =    $row[3]; 
     $position =   $row[4]; 
     $type =    $row[5]; 
     $circuit_name =  $row[12]; 
     $circuit_number = $row[13]; 
     $fixture_options = $row[14]; 

     list($mode) = explode(";", $fixture_options); // We strip the other mode options out 
     $newmode = str_replace("Mode:","", $mode); 

     $wattage =   $row[15]; 
     $weight =   $row[24]; 
     $status =   $row[33]; 



echo "<table>"; 
Table('Channel',$channel); 
Table('Universe',$uni); 
Table('Address',$address); 
Table('Spot',$spot); 
Table('Position',$position); 
Table('Type',$type); 
Table('Circuit Name',$circuit_name); 
Table('Circuit Number',$circuit_number); 
Table('Fixture Mode',$newmode); 
Table('Wattage',$wattage); 
Table('Weight',$weight); 
Table('Status',$status); 

echo "</table>"; 


} 
+5

Показать на var_dump() в '$ mode' –

+1

Если' str_replace' не заменяет строку, которая означает, что точное строка не находится в вашей строке. Если 'var_dump' все еще оставляет сомнения, используйте' echo bin2hex ($ mode) 'и сравнивайте его с' echo bin2hex ('Mode:') '. – deceze

ответ

3

Мой совет: Возьмите его с помощью регулярных выражений в один присест:

$string = "Mode: 5; Speed: mSpeed Speed; Tilt Range: Full"; 

preg_match('/Mode: (\d+);/',$string, $matches); 

//result in $matches[1];