Я пытаюсь отделить данные от файлов Isam, зацикливая их построчно, используя fgets и substr, чтобы получить правильные данные из правильного положения строки.
Источник данных:
000000124325424Productname Type Price Weight Unit Unitcode
000000124325324Productname2 Type2 Price2 Weight2 Unit2 Unitcode2
Проблема в том, что substr не распознает эти лишние пробелы между данными, и поэтому положение данных меняется в каждой строке.
Substr «видит» строку так:
000000124325424Productname Type Price Weight Unit Unitcode
Есть ли способ сохранить промежутки между предметами?
После редактирования вопроса мне кажется, что вы, возможно, имеете дело со строкой с разделителями табуляции \t
, В любом случае, продезинфицируйте каждую строку перед тем, что вы пытаетесь сделать substr()
:
$s = preg_replace('/\s+/', ' ', $s);
Это лишит несколько пробелов " "
=>" "
, вкладки \t
и даже разрывы строк.
Возможно, вы можете найти explode()
как лучший подход после дезинфекции:
explode(" ", str_replace("\t", " ", $line1))[0]
всегда будет первым пунктом, т.е. кодом продукта без лишних пробелов.
Когда вы отображаете текст на веб-странице, веб-браузер не показывает несколько пробелов как таковых. Попробуйте обернуть ваш текст в тег предварительного форматирования, например, так
<pre>000000124325324Productname2 Type2 Price2 Weight2 Unit2 Unitcode2</pre>
Затем браузер отобразит его со всеми показанными пробелами.
Вы можете устранить эту проблему, используя View Source … В вашем браузере.