2012-08-13 2 views
0

아래는 $ output이라고하는 내 문자열이며 fsockopen과 fread에서 파생되었습니다. 바꿀 수있는 유일한 것은 자유인이지만 그 전에는 아무것도 없습니다.PHP는 MySQL 배열 결과와 비슷한 문자열 서식 지정

14336.0 K9IA 13-Aug-2012 1750Z washington, dc (throb) 
14336.0 K9IA 13-Aug-2012 1750Z fond du lac, wi (ssb) 
14336.0 K9IA 13-Aug-2012 1752Z calumet, wi (ssb) 
14336.0 K9IA 13-Aug-2012 1752Z carsen city, nv (ssb) 
14336.0 K9IA 13-Aug-2012 1753Z carson city, nv (ssb) 
14336.0 K9IA 13-Aug-2012 1754Z dane, wi (ssb) 
14336.0 K9IA 13-Aug-2012 1759Z dane, wi (cw) 
14336.0 KA2TED 13-Aug-2012 1759Z Carson City,NV(SSB) 
14336.0 K9IA 13-Aug-2012 1800Z dane, wi (psk) 
14336.0 K9IA 13-Aug-2012 1801Z bristol, va (psk) 
14336.0 K9IA 13-Aug-2012 1815Z caeson city, nv (rtty) 
14336.0 K9IA 13-Aug-2012 1816Z carson city, nv (rtty) 

나는 다음 문자열 $ 출력을 가지고 수행

$output = str_replace("\n", "<br>", $output); 

이것은 닫는 대괄호 후 줄 바꿈을 삽입)과 12 개 라인을 형성한다. 지금까지 완벽.

내가해야 할 일은 지금 $ 출력을 가져 와서 멋지게 서식이 지정된 테이블에 표시 할 수 있어야합니다.

내 말은 내가 그것을에서와 같은 MySQL의 데이터 인 것처럼 동일한 형식을 사용하고 싶습니다 ....

배열과 같이 필드입니다 ......입니다 :

while($row = mysqli_fetch_array($result)) 
    echo $row['Freq']; 
    echo "</td><td>"; 
    echo $row['Call']; 
    echo "</td><td>"; 
    echo $row['Date']; 
    echo "</td><td>"; 
    echo $row['Time']; 
    echo "</td><td>"; 
    echo $row['CTYState']; 
    echo "</td><td>"; 
    echo $row['Mode']; 
    echo "</td><td>"; 

각각을 분리해야하는 이유는 주어진 필드와 링크 등의 다른 기능을 수행해야합니다. 나는 수색하고, 시도하고, 좌절시키고, 방법이 있어야한다는 것을 알고있다. VB 또는 PHP에서 MySQL 또는 odbc_connect를 사용하여 반복적으로이 작업을 수행했지만 문자열은 사용하지 않았습니다.

UPDATE ....

나는 등 링크, 다른 색상의 필드를 사용할 수 있기 때문에 에드 Manot 게시 방법을 사용 ........

하지만 .. ........

실제로 제대로 작동하지 않습니다. 처음 두 필드 만 볼 수 있습니다. 내가 볼 수있는 필드는 필드 1과 필드 3입니다. 원본 코드를 사용하면 1 14336.0 만 볼 수 있고 다른 것은 볼 수 없습니다. 어떤 아이디어?

echo "<table border='1'>"; 
echo"<tr><th>FieldA</th><th>FiledB</th><th>FiledC</th><th>FieldD</th><th>FieldE</th> <th>FiledF</th><th>FiledG</th></tr>\n"; 
//split the output into lines based on the line break character 
$lines = explode("\n", $output); 
foreach($lines as $line) { 
//split the line into fields based on the space character 
$fields = explode(" ", $line); 
echo "<td>" .$fields[0]. "</td>"; 
echo "<td>" .$fields[1]. "</td>"; 
echo "<td>" .$fields[2]. "</td>"; 
echo "<td>" .$fields[3]. "</td>"; 
echo "<td>" .$fields[4]. "</td>"; 
echo "<td>" .$fields[5]. "</td>"; 
echo "<td>" .$fields[6]. "</td>"; 
echo "<td>" .$fields[7]. "</td>"; 

} 
echo '</table>'; 
+0

입력 데이터가 끔찍한 형식입니다. 필드가 탭으로 구분되어 있지 않습니까? 이것은 0 개 이상의 공백을 포함 할 수있는 공백으로 구분 된 인용되지 않은 필드 인 것처럼 보입니다. 데이터의 출처는 어디입니까? – DaveRandom

+0

필드는 공백으로 구분 된 인용되지 않은 필드입니다. 각 행의 끝에는 새로운 행이 있습니다. 데이터는 fsockopen과 fread를 사용하여 텔넷 세션에서 나옵니다. – Blue68Camaro

답변

0

나는 문제를 알아 냈다. 공백 대신에 당근이 사용되었습니다. 그들은 공간으로 나타 났지만 그렇지 않았습니다. 정규 표현식을 사용하여 ^을 ""로 바꿉니다. 이제 작동합니다.

0

당신은 배열로 데이터를 분할해야합니다

//split the output into lines based on the line break character 
$lines = explode("\n", $output); 
foreach($lines as $line) { 
    //split the line into fields based on the space character 
    $fields = explode(" ", $line); 
    echo "<td>" . $fields[0] . "</td>"; 
    echo "<td>" . $fields[1] . "</td>"; 
    echo "<td>" . $fields[2] . "</td>"; 
    // etc... 
} 

http://php.net/manual/en/function.explode.php

+0

'explode()'가 작업을 수행 할 때 사람들에게'split()', * 특히 *를 사용하지 말아주십시오. 'join()'은'implode()'의 별칭 일지 모르지만'split()'은 단순히'explode()'의 별명이 아니며'ereg' 기반 함수이므로 제거 될 것입니다 PHP, 잘하면 곧. – DaveRandom

+0

나는 폭발 할 사용법을 편집했습니다. –

+0

위 내 게시물을 업데이트 ..... – Blue68Camaro

0

같이 (? 정말있을 경우) 캐리지 리턴을 교체하고 (더러운) 일을하지 마십시오

$lines = explode("\n", $output); 
echo '<table>'; 
foreach($lines as $line) { 
    echo '<tr>'; 
    $parts = explode(" ", $line); 
    echo '<td>'.implode("</td><td>", $parts).'</td>'; 
    echo '</tr>'; 
} 
echo '</table>'; 

: