0

db からデータ ファイルの区切り文字を取得し、それをいくつかの$delimitervar に保存して、ファイル リーダーのクラスに渡します。

new CSVreader($delimiter);

問題は、それをタブレータとしてではなく、backslash + t letter文字列として扱うことです。

これを次のように直接渡すと、new CSVreader("\t");代わりに問題なく動作します

\t最後の質問は次のとおりです。文字列をdatabase次のように変換する方法special char (tab)

私はUTF-8dbに使用しています

4

5 に答える 5

1

PHP インタープリターは、PHP ソース ファイルにある二重引用符で囲まれた文字列を自動的にエスケープするため、new CSVreader("\t")実際にはタブ文字を示します。

逆に、外部ソースから文字列を読み取る場合、バックスラッシュはそのリテラル値 (バックスラッシュと 't') を想定します。"\\t"PHP ソースでは(二重引用符) または(一重引用符)として表現しますが'\t'、これは望ましくありません。

とにかく、PHP はそのためのネイティブ関数を提供します。stripcslashes()は、C ライクなシーケンス (\a、\b、\f、\n、\r、\t、および \v) と、8 進数および 16 進数の表現を認識し、それらを実際の意味に変換します。

// C-like escape sequence
stripcslashes('\t') === "\t"; // true;

// Hexadecimal escape sequence
stripcslashes('\x09') === "\t"; // true;

// Octal escape sequence
stripcslashes('\011') === "\t"; // true;
于 2020-01-01T09:20:24.443 に答える
0

いくつかの方法があります。

<?php
function trans($string) {
    return strtr($string, array(
        '\t'    => "\t",
        '\r'    => "\r",
        '\n'    => "\n"
    ));
}

$string = 'Hello\tAnthony';

echo $string;                               //Hello\tAnthony
echo str_replace('\t', chr(9), $string);    //Hello Anthony
echo trans($string);                        //Hello Anthony
于 2013-07-01T11:52:18.530 に答える