isam — PHP: лишние пробелы удалены при использовании substr

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

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

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

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

Substr «видит» строку так:

000000124325424Productname Type Price Weight Unit Unitcode

Есть ли способ сохранить промежутки между предметами?

2

Решение

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

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

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


Возможно, вы можете найти explode() как лучший подход после дезинфекции:

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

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

2

Другие решения

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

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

Затем браузер отобразит его со всеми показанными пробелами.

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

1

По вопросам рекламы [email protected]