Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Резка строки функцией strtok()
 
 автор: tAleks   (08.09.2006 в 01:56)   письмо автору
 
 

Строка из CSV файла с тремя "колнками": Фамилия | Имя | Отчество, но фаимиля не заполнена, т.е. строка выглядит так:

;Имя;Отчество


Когда режу ее ф-ей strtok():

$surname = strtok($value, ";");
$name = strtok(";");
$patronymic = strtok(";");


То получается что 'Пустое поле' пропускается и получается так:
$surname = "Имя";
$name = "Отчество";
Т.е. эта функция игнорирует "пустые поля".

А когда все поля заполнены, то все ОК.

Это так и должно быть? И как с этим бороться?

   
 
 автор: kasmanaft   (08.09.2006 в 09:08)   письмо автору
 
   для: tAleks   (08.09.2006 в 01:56)
 


Начиная с PHP 4.1.0, был изменен способ обработки пустых подстрок. До версии 4.1.0 эта
 функция возвращала пустые подстроки, а начиная с 4.1.0 эти подстроки пропускаются.


Пример 2. Старый способ обработки пустых подстрок функцией strtok()

<?php
$first_token  
strtok('/something''/');
$second_token strtok('/');
var_dump($first_token$second_token);
?> 

Вывод: string(0) ""
    string(9) "something"

Пример 3. Новый способ обработки пустых подстрок функцией strtok()

<?php
$first_token  
strtok('/something''/');
$second_token strtok('/');
var_dump($first_token$second_token);
?> 

Вывод: string(9) "something"
    bool(false)

Помните также о том, что может быть возвращена подстрока "0". В логических выражениях
 это значение может соответствовать FALSE.


Можно воспользоваться ф-ей explode, вот что получим:


<?
$text 
';Имя;Отчество';
$text explode(";"$text);
$surname $text[0];
$name $text[1];
$patronymic $text[2];
echo 
"<pre>";
print_r ($text);
?>

   
 
 автор: Trianon   (08.09.2006 в 09:22)   письмо автору
 
   для: tAleks   (08.09.2006 в 01:56)
 

чем плоха функция fgetcsv?
Самостоятельно разбирать CSV-формат - занятие довольно гадостное, никакими strtok'ами его нормально не реализовать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования