SplFileObject::setCsvControl

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

SplFileObject::setCsvControl β€” УстанавливаСт символы раздСлитСля, ограничитСля ΠΈ экранирования для CSV-ΠΏΠΎΠ»Π΅ΠΉ

ОписаниС

public function SplFileObject::setCsvControl(string $separator = ",", string $enclosure = "\"", string $escape = "\\"): void

ΠœΠ΅Ρ‚ΠΎΠ΄ устанавливаСт символы раздСлитСля ΠΏΠΎΠ»Π΅ΠΉ, ограничитСля Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ экранирования для Ρ€Π°Π·Π±ΠΎΡ€Π° CSV-ΠΏΠΎΠ»Π΅ΠΉ.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

separator

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ separator устанавливаСт символ-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ символ.

enclosure

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ enclosure устанавливаСт символ-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ значСния поля ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ символ.

escape

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ escape устанавливаСт символ экранирования ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ символ ΠΈΠ»ΠΈ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. ΠŸΡƒΡΡ‚Π°Ρ строка "" ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ экранирования.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ символ ограничитСля Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” enclosure экранируСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ поля ΠΏΡƒΡ‚Ρ‘ΠΌ удвоСния; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символ экранирования escape. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для стандартных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° смысл Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ "" ΠΈ \" ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ². Π‘ΠΈΠΌΠ²ΠΎΠ» экранирования β€” escape Π½Π΅ нСсёт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ смысла, ΠΊΡ€ΠΎΠΌΠ΅ экранирования символа ограничитСля Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” enclosure; ΠΎΠ½ Π΄Π°ΠΆΠ΅ Π½Π΅ экранируСт сам сСбя.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Начиная с PHP 8.4.0 ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ escape, Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ потрСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ явно, ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² CSV-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° пСрСстаёт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандарту » RFC 4180 ΠΈΠ»ΠΈ Π½Π΅ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с PHP-функциями для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с CSV-строками, Ссли для символа экранирования escape ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ отличаСтся ΠΎΡ‚ пустой строки "". Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° escape β€” "\\", поэтому Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ измСнят Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии PHP, Π½ΠΎ Π½Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ PHP 9.0.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния послС выполнСния.

Ошибки

Ѐункция выбрасываСт ΠΎΡˆΠΈΠ±ΠΊΡƒ ValueError, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для раздСлитСля ΠΏΠΎΠ»Π΅ΠΉ separator ΠΈΠ»ΠΈ ограничитСля Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ enclosure содСрТат Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°.

Ѐункция выбрасываСт ΠΎΡˆΠΈΠ±ΠΊΡƒ ValueError, Ссли Π΄Π»ΠΈΠ½Π° значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° escape Π½Π΅ Ρ€Π°Π²Π½Π° ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±Π°ΠΉΡ‚Ρƒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΏΡƒΡΡ‚ΡƒΡŽ строку.

Бписок измСнСний

ВСрсия ОписаниС
8.4.0 Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· явной ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ значСния Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ escape устарСл.
7.4.0 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ escape Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° экранирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ установки символов раздСлитСля, ограничитСля ΠΈ экранирования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ SplFileObject::setCsvControl()

<?php

$file
= new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl('|');

foreach (
$file as $row) {
list (
$fruit, $quantity) = $row;
// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ значСния
}

?>

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° data.csv

<?php
apples|20
bananas|14
cherries|87
?>

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • SplFileObject::getCsvControl() - ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ символы раздСлитСля, ограничитСля ΠΈ экранирования CSV-ΠΏΠΎΠ»Π΅ΠΉ
  • SplFileObject::fgetcsv() - ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ строку ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ указатСля ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎ CSV-полям
  • SplFileObject::fputcsv() - ЗаписываСт массив ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ°ΠΊ CSV-строки
  • fputcsv() - Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ строку Π² CSV-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ записываСт строку Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
  • fgetcsv() - ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ строку ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ указатСля ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎ CSV-полям
  • str_getcsv() - Π Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ CSV-строку Π² массив
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы