찾다

 >  Q&A  >  본문

PHP를 사용하여 PostgreSQL 데이터베이스에서 데이터를 가져올 때 개행 문자가 누락되었습니다.

<p>제목: PHP를 사용하여 PostgreSQL 데이터베이스에서 데이터를 가져올 때 줄 바꿈 문자가 누락되었습니다<br />텍스트:<br />PHP를 사용하여 PostgreSQL 데이터베이스에서 데이터를 가져오는 동안 문제가 발생했습니다. 내 데이터베이스의 데이터를 보기 위해 Navicat을 사용하고 있는데 다음과 같이 데이터에 새 줄(n)이 명확하게 표시됩니다. </p><p><code></code>< <pre class="brush:php;toolbar: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 = '포스트그레스'; $pass = '123456'; $dsn = "pgsql:호스트=$host;port=5432;dbname=$db;옵션='--client_encoding=UTF8'"; $선택 = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => PDO::ATTR_STRINGIFY_FETCHES => ]; $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를 찾았습니다: " . } if ($LFPos !== false) { echo "다음 위치에서 LF를 찾았습니다: " . } if ($CRPos !== false) { echo "다음 위치에서 CR을 찾았습니다: " . } if ($CRLFPos === false && $LFPos === false && $CRPos === false) { echo "응답 내용에서 줄 바꿈을 찾을 수 없습니다."; } } <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粉696146205P粉696146205524일 전689

모든 응답(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
  • 취소회신하다