2016-04-04 32 views
0

Gerçekten de bir PHP kullanıcısı olarak çalışmak için nasıl çalışacağım konusunda bir kayıp veriyorum.TextArea'yı php'ye aktarma, bir satır dizesi olarak çıkar.

temelde formumda, HTML'mde bir kullanıcının bir TraceRoute içinde komut satırından yapışacağı bir TextArea var. Bu daha sonra PHP formuma geçiyor (xml'ye dönüştü ... bu önemsiz). Bununla birlikte, tracert, bireysel çizgilerin aksine tek bir sıralı dizi olarak çıkıyor. Bu okumayı çok zorlaştırıyor.

Bu nedenle traceroute'un TextArea kutusunda olduğu gibi gösterilmesinin bir yoluna ihtiyacım var.

İşte benim html kodu (submit.html) burada

<html> 
<body> 
<form action="convert2xml.php" method="post"> 
Traceroute: 
<textarea rows="5" cols="50" name="Traceroute"></textarea> 
<br> 
<input type="Submit"> 
</form> 
</body> 
</html> 

Ve verileri (convert2xml.php) kolları benim PHP dosyası olmasıdır.

<html> 
<body> 
&#60;Information&#62; 
Traceroute output: 
<br> 
<?php echo $_POST["Traceroute"]; ?> &#60;/Information&#62; 
<br> 

sen < görebilir ve> html kodları ile değiştirilmiştir gibi, bu (bu durumda Bilgi adlı bir xml etiketinde olduğu) güzel bir XML düzeni haline döner budur.

C:\Users\******>tracert 8.8.8.8 

    Tracing route to google-public-dns-a.google.com [8.8.8.8] 
    over a maximum of 30 hops: 

     1  1 ms  3 ms  1 ms 192.168.0.1 
     2 12 ms 12 ms  8 ms **.**.**.** 
     3  9 ms 12 ms  9 ms **.**.**.** 
     4 13 ms 13 ms 13 ms example-doman.name [**.**.**.**] 
     5 15 ms 15 ms 14 ms example-doman.name [**.**.**.**] 
     6 12 ms 14 ms 13 ms **.**.**.** 
     7 14 ms 13 ms 16 ms **.**.**.** 
     8 11 ms 19 ms 15 ms google-public-dns-a.google.com [8.8.8.8] 

    Trace complete. 

Ama ne ben alıyorum bir sürekli dizedir: Ben baktım

<Information>C:\Users\******>tracert 8.8.8.8 Tracing route to google-public-dns-a.google.com [8.8.8.8] over a maximum of 30 hops: 1 1 ms 3 ms 1 ms 192.168.0.1 2 12 ms 12 ms 8 ms **.**.**.** 3 9 ms 12 ms 9 ms **.**.**.** 4 13 ms 13 ms 13 ms example-doman.name [**.**.**.**] 5 15 ms 15 ms 14 ms example-doman.name [**.**.**.**] 6 12 ms 14 ms 13 ms **.**.**.** 7 14 ms 13 ms 16 ms **.**.**.** 8 11 ms 19 ms 15 ms google-public-dns-a.google.com [8.8.8.8] Trace complete. </Information> 

bir örnek girdi olacaktır (i IP ve etki alanlarının bazı Redacted ettik) nl2br içine, ama bu işe yaramazsa, traceroute çizgisinin sonunda manuel olarak "\ n" girmek zorunda kalacağım gibi, bu bana yardımcı olmaz.

Düşünebildiğim tek şey, ascii yeni satır kodunun dizesini kontrol ettiği bir döngü ve sonra bir "\ n" veya < br> ekler. Veya "ekleyerek şey çizgisi?

" html alma sonra metin alanına, her çizgisi etrafında ve her birinde < br> eklemek için" olur Ama bunu yaparken bazı daha kolay bir yöntem var olmalıdır? Herhangi Fikirler?

* ********* GÜNCELLEME ***********

@FastTurtle

tarafından sağlanan Doğru cevap

bunu karmaşık hale bitmişti görünüyor. için mükemmel çalışır n2lbr

amacım.İşte

güncellenmiş PHP'dir:

&#60;Information&#62; 
    <?php echo nl2br($_POST["Traceroute"]); ?> &#60;/Information&#62; 

Ve burada şimdi çıktısı:

</Information>C:\Users\******>tracert 8.8.8.8 

Tracing route to google-public-dns-a.google.com [8.8.8.8] 
over a maximum of 30 hops: 

1 1 ms 3 ms 1 ms 192.168.0.1 
2 12 ms 12 ms 8 ms **.**.**.** 
3 9 ms 12 ms 9 ms **.**.**.** 
4 13 ms 13 ms 13 ms example-doman.name [**.**.**.**] 
5 15 ms 15 ms 14 ms example-doman.name [**.**.**.**] 
6 12 ms 14 ms 13 ms **.**.**.** 
7 14 ms 13 ms 16 ms **.**.**.** 
8 11 ms 19 ms 15 ms google-public-dns-a.google.com [8.8.8.8] 

Trace complete. </Information> 
+0

İpucu: HTML ***'deki Whitespace *** varsayılan olarak bir şey ifade etmiyor ... – deceze

cevap

2

Kullanım

echo nl2br($_POST["Traceroute"]); 

daha nl2br işlevini http://php.net/manual/en/function.nl2br.php

Umarım yardımcı olur :)

+0

Yine de * girinti * almak için biraz daha fazla işlem yapmanız gerekecek .. – deceze

+0

Eh .... şimdi çok aptal hissediyorum! nl2br benim amacım için iyi çalıştı. Neden daha önce çalıştığımı bilmiyorum. Sanırım uzun zamandır bakıyorum ve kafamın içinde karmaşıklaştırıyor :) Çok teşekkürler @FastTurtle. Cevaplandı olarak işaretleyeceğim. –