ホームページ  >  に質問  >  本文

PHP を使用して PostgreSQL データベースからデータを取得する際に改行文字が欠落する

<p>タイトル: PHP を使用して PostgreSQL データベースからデータを取得するときに改行文字がありません<br />本文:<br />PHP を使用して PostgreSQL データベースからデータを取得中に問題が発生しました。 Navicat を使用してデータベース内のデータを表示しているのですが、次のようにデータ内の改行 (n) が明確に表示されます。 </p>gt;

gt;gt;< /p> <pre class="ブラシ:php;ツールバー:false;">addr=1 アドレス=2 アドレス=3 アドレス=4 アドレス=5 アドレス=6 j=6 [rs485] コミッド=1 コミッド=1 [rs485] ボーレート=115200 bdrate=115200 ...</pre> <p>しかし、PHP を使用してこのデータを取得すると、改行が失われるようです。データを取得するために使用している PHP コードは次のとおりです。 </p> <pre class="lang-php prettyprint-override"><code>$host = '192.168.1.92'; $db = 'GneMaster'; $user = 'postgres'; $pass = '123456'; $dsn = "pgsql:host=$host;port=5432;dbname=$db;options='--client_encoding=UTF8'"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false、 PDO::ATTR_STRINGIFY_FETCHES => false、 ]; $pdo = 新しい PDO($dsn, $user, $pass, $opt); $id = '648c0d5dae53ac34094ede6d'; $sql = "stationcmd WHERE id = :idから応答コンテンツを選択します"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_STR); $stmt->execute(); while ($row = $stmt->fetch()) { echo "改行をチェックしています: n"; $CRLFPos = strpos($row['responsecontent'], "rn"); $LFPos = strpos($row['responsecontent'], "n"); $CRPos = strpos($row['responsecontent'], "r"); if ($CRLFPos !== false) { echo "CRLF が位置で見つかりました: " . $CRLFPos . "n"; } if ($LFPos !== false) { echo "LF が位置で見つかりました: " . $LFPos . "n"; } if ($CRPos !== false) { echo "CR が位置で見つかりました: " . $CRPos . "n"; } if ($CRLFPos === false && $LFPos === false && $CRPos === false) { echo "responsecontentn に改行が見つかりません"; } } </code></pre> <p>以下に示すように、この PHP スクリプトの出力には改行が含まれません。 </p> <pre class="brush:php;toolbar:false;">addr=1addr=2addr=3addr=4addr=5addr=6j=6[rs485] comid=1comid=1[rs485] baudrate=115200bdrate=115200.. .</pre> <p>PHP を使用してデータを取得すると改行が失われるのはなぜですか?また改行を保持するにはどうすればよいですか? <br /><br />Navicat で見られるように、PHP を使用して PostgreSQL データベースからデータをフェッチするときに、元の改行を保持できるようにしたいと考えています。私が理解しているところによると、データベースから文字列を取得するときは、改行を含むすべての文字が保持されるはずです。 <br /><br />私が試したアプローチは、データベースから直接データを取得して出力することでした。ただし、結果の出力には改行が含まれません。また、PHP で改行文字 (n、r、rn) を探してみましたが、これらの文字はデータ内に見つかりません。 <br /><br />私が期待しているのは、PHP を使用してデータを取得して出力すると、Navicat の場合と同じように見えることです。つまり、データには改行が含まれている必要があります。ただし、実際の結果は、受信したデータに改行が含まれていません。 <br /><br />PHP と PostgreSQL に関するドキュメントも確認しましたが、この問題に関連する情報は見つかりませんでした。 Stack Overflow やその他の関連フォーラムを検索しましたが、同様の問題や解決策は見つかりませんでした。 <br /><br />PHP でデータをフェッチするときに元の改行を保持する方法を探しています。 PHP と PostgreSQL についてはある程度の知識がありますが、この問題の解決策は見つかりませんでした。誰かがこの問題の解決を手伝ってくれることを願っています。 </p>


P粉696146205P粉696146205461日前627

全員に返信(1)返信します

  • P粉309989673

    P粉3099896732023-08-07 09:27:46

    混乱させてしまい申し訳ありません。私が提供した PHP コードは 192.168.1.92 で PostgreSQL データベースに接続しますが、Navicat で表示しているデータベースは 192.168.1.93 です。 192.168.1.93 のデータベースには改行が含まれていますが、192.168.1.92 のデータベースには改行が含まれていません。この違いが私が遭遇した問題の原因でした。混乱を招いてしまい誠に申し訳ございません。

    返事
    0
  • キャンセル返事