Я действительно схожу с ума из-за проблемы, которую, надеюсь, вы поможете мне решить.
Декорация.
Файл php считывает некоторые данные в текстовом файле и заполняет базу данных mysql.
Для этого я использовал функцию "sscanf" и все работает очень хорошо ... но не всегда!
Из-за небольшой разницы в формате некоторых файлов текстовых данных поля в базе данных заполнены неправильно.
Вот пример:
Это общая строка файла данных .txt:
...
<name:4>John <country:3>USA <age:2>20
...
Для чтения данных в файле и заполнения базы данных MyQSL я использую функцию sscanf, за которой следуют конкретные параметры, как показано в следующих примерах:
$values = sscanf ($s, "<name:%d>%s ", $length,$personal_data['name']);
$values = sscanf ($s, "<country:%d>%s ", $length,$personal_data['country']);
$values = sscanf ($s, "<age:%d>%s ", $length,$personal_data['age']);
Эти параметры в порядке, и база данных MyQSL заполнена правильно; каждое поле имеет свои данные. ИМЯ -> "Джон" - СТРАНА -> "США" - ВОЗРАСТ "20"
К сожалению, текстовые файлы, содержащие мои данные, немного отличаются, хотя используют один и тот же формат.
Вот еще один пример:
<name:4>John<country:3>USA<age:2>20
В этом случае функция sscanf с идентичными параметрами, использовавшимися ранее, работает неправильно. Все поля в базе данных имеют неверные данные. Это связано с тем, что в конце каждого поля исходного файла нет пробелов (.txt)
База данных будет заполнена таким образом ИМЯ -> "Джон" ry: 3> США "- ВОЗРАСТ"
Поэтому я должен изменить параметры sscanf следующим образом:
$values = sscanf ($s, "<name:%d>%s<", $length,$personal_data['name']);
$values = sscanf ($s, "<country:%d>%s<", $length,$personal_data['country']);
$values = sscanf ($s, "<age:%d>%s<", $length,$personal_data['age']);
и все снова в порядке.
Проблема в пустом пространстве. В некоторых .txt файлах присутствует после каждого поля, а в других файлах нет. Вы можете заметить различия после параметра% s (за которым следует пробел в одном случае и <в другом). </p>
Как я могу решить проблему? Есть ли способ сообщить sscanf, что в текстовом исходном файле каждое поле заканчивается пробелом или <??
Любое предложение? Идея </p>
Заранее спасибо, Мэтью