使用PHP從PostgreSQL資料庫取得資料時缺少換行符
<p>標題:使用PHP從PostgreSQL資料庫取得資料時缺少換行符號<br />正文:<br />我在使用PHP從PostgreSQL資料庫取得資料時遇到了一個問題。我使用Navicat來查看我的資料庫中的數據,它清楚地顯示了數據中的換行符(n),如下所示:</p><p><code></code>< /p>
<pre class="brush:php;toolbar:false;">addr=1
addr=2
addr=3
addr=4
addr=5
addr=6
j=6
[rs485] comid=1
comid=1
[rs485] baudrate=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 = new PDO($dsn, $user, $pass, $opt);
$id = '648c0d5dae53ac34094ede6d';
$sql = "SELECT responsecontent FROM stationcmd WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$stmt->execute();
while ($row = $stmt->fetch())
{
echo "Checking for line breaks: n";
$CRLFPos = strpos($row['responsecontent'], "rn");
$LFPos = strpos($row['responsecontent'], "n");
$CRPos = strpos($row['responsecontent'], "r");
if ($CRLFPos !== false) {
echo "CRLF found at position: " . $CRLFPos . "n";
}
if ($LFPos !== false) {
echo "LF found at position: " . $LFPos . "n";
}
if ($CRPos !== false) {
echo "CR found at position: " . $CRPos . "n";
}
if ($CRLFPos === false && $LFPos === false && $CRPos === false) {
echo "No line breaks found in 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 />我希望在使用PHP從PostgreSQL資料庫取得資料時能夠保留原始的換行符,就像在Navicat中看到的一樣。據我了解,當我從資料庫中獲取一個字串時,它應該保留所有字符,包括換行符。 <br /><br />我嘗試的方法是直接從資料庫取得資料並輸出它。然而,結果輸出中沒有包含任何換行符。我還嘗試在PHP中尋找換行符(n、r、rn),但在我的資料中沒有找到這些字元。 <br /><br />我期望的結果是,當我使用PHP獲取和輸出資料時,它看起來與在Navicat中一樣,即資料應該包含換行符。然而,實際結果是我收到的資料不包含換行符。 <br /><br />我也查閱了一些關於PHP和PostgreSQL的文檔,但沒有找到與此問題相關的資訊。我在Stack Overflow和其他相關論壇上進行了搜索,但沒有找到類似的問題或解決方案。 <br /><br />我正在尋找一種在PHP中獲取資料時保留原始換行符的方法。我對PHP和PostgreSQL有一些了解,但還沒有找到解決這個問題的方法。我希望有人能幫助我解決這個問題。 </p><p><br /></p>