2015-10-03 3 views
2

Я пытаюсь отделить данные от файлов Isam, зацикливая их по строкам с помощью fgets и с substr, чтобы получить правильные данные из правильного положения строки.PHP: лишние пробелы удаляются при использовании substr

Источник данных:

000000124325424Productname Type Price Weight Unit Unitcode 
000000124325324Productname2 Type2 Price2 Weight2 Unit2 Unitcode2 

Проблема заключается в том, что подстрока не recocnize эти лишние пробелы между данными и, следовательно, положение данных меняется каждую строку.

SubStr является «видеть» линии, как это:

000000124325424Productname Type Price Weight Unit Unitcode 

Есть ли способ, чтобы сохранить пространство между элементами?

+0

что вы пытаетесь «подстроить»? – davidkonrad

+0

Пример: код продукта $ row. = Ltrim (trim (substr ($ line, 0,16)), '0'); –

ответ

2

После редактирования вопроса мне кажется, что вы, возможно, имеете дело с строкой с разделителями табуляции \t. В любом случае, дезинфицировать каждую строку перед тем, что вы пытаетесь сделать с substr():

$s = preg_replace('/\s+/', ' ', $s); 

Это полоса из нескольких заготовок " " =>" ", вкладки \t и даже разрывы строк.


Может быть, вы можете найти explode() как лучший подход после санобработки:

explode(" ", str_replace("\t", " ", $line1))[0] 

всегда будет первым товаром, то есть код продукта без лишних пробелов.

+0

Это правильно, но не пробелы, а вкладки. preg_replace ('/ \ s + /', '', $ s) не работает, но заменяет только вкладки ($ line = str_replace ("\ t", "", $ line1);) сделал трюк. Спасибо, в любом случае! –

+0

@RogerWayne - Weird, '/ \ s + /' работает для меня. См. Обновление, возможно, вам не нужно 'substr' в конце концов, если все ваши строки имеют одинаковую структуру. Просто предложение. Спасибо, что приняли ответ. – davidkonrad

1

При отображении текста на веб-странице веб-браузер не отображает несколько мест как таковых. Попробуйте обертывание ваш текст в теге preformatting, как так

<pre>000000124325324Productname2 Type2 Price2 Weight2 Unit2 Unitcode2</pre> 

Тогда браузер отображает его со всеми пробелами, показанными.

Вы можете устранить эту проблему, используя View Source ... В вашем браузере.

+0

Это заданный - но это помогает 'substr' распознавать дополнительные пробелы точно ... как? – davidkonrad

Смежные вопросы