在PHP中使用QR代码扫描程序返回新行

时间:2017-04-28 04:41:38

标签: php qr-code

所以在搜索了这里提供的问题之后,当用户扫描代码时,我仍然找不到破解新行的解决方案。

我已经尝试了\ n,PHP_EOL但仍然无法解决它。

<?php
$host = 'localhost';
$user = 'root';
$pass = 'db_pass';
$name = 'db_name';

$i = 0;
$q = $r = $s ="";
$data = $data2 = array();
$con = new mysqli($host,$user,$pass,$name);
    if($con->connect_error)
        die ("Error: ".$con->connect_error);
    $pid = ($_POST['pid']);
        $result = mysqli_query($con,"SELECT * FROM purchase_detail WHERE purchase_id ='$pid' ");

 $b=mysqli_num_rows($result);
    while($row = mysqli_fetch_array($result))
    {

        $data[$i] = $row['type_id'];
        $data2[$i] = $row ['quantity'];
        $i++;
    }



    for ($x = 0; $x < $b; $x++) 
    {   
    $q .= $data[$x];
    $r .= $data2[$x];
    $s .='Type: '.$q[$x] .' Quantity: '.$r[$x];
    echo ''.PHP_EOL.'';
    } 

echo "<img src='qr_img.php?d=$s'";


?>

<html>
    <form action="<?php echo htmlspecialchars ($_SERVER['PHP_SELF']);?>" method="post">
    <input type="text" name="pid">
    </form>
</html>

当前的结果是:

Type: 1 Quantity: 1Type: 2 Quantity: 1Type: 3 Quantity: 1Type: 4 Quantity: 1

但是,我希望它看起来像这样:

Type: 1 Quantity: 1
Type: 2 Quantity: 1
Type: 3 Quantity: 1
Type: 4 Quantity: 1

实施例: QR Scanner

我使用CodeTwo Desktop QR阅读器扫描QR码。

EDITED: 如果我使用&#39; \ n&#39;:

for ($x = 0; $x < $b; $x++) 
{   
 $q .= $data[$x];
 $r .= $data2[$x];
 $s .='Type: '.$q[$x] .' Quantity: '.$r[$x];
 echo '\n';
} 

Result of '\n'

解: google-ing几天之后,我找到了以下答案:

for ($x = 0; $x < $b; $x++) 
{   
$q .= $data[$x];
$r .= $data2[$x];
$s .='Type: '.$q[$x] .' Quantity: '.$r[$x].'%0A';
} 

只需%0A

2 个答案:

答案 0 :(得分:0)

尝试使用<br />代码

for ($x = 0; $x < $b; $x++) 
{   
    $q .= $data[$x];
    $r .= $data2[$x];
    $s .='Type: '.$q[$x] .' Quantity: '.$r[$x];
    echo "<br />";
} 

您的输出是HTML,但是如果您放置plain text,则\ n将像下面的

一样工作
<?php
header('Content-type: text/plain');
echo "abc\nxyz";
?>

请记住\n将在双引号内工作,例如"\n"而不是'\n'。因为双引号会评估变量和其他特殊字符。

当您在浏览器上运行 PHP 时,默认情况下它将呈现HTML而不是纯文本,您需要指定内容类型。所以在你的情况下\ n将不起作用。

为您编辑的解决方案:

for ($x = 0; $x < $b; $x++) 
{   
 $q .= $data[$x];
 $r .= $data2[$x];
 $s .='Type: '.$q[$x] .' Quantity: '.$r[$x];
 echo "<br />"; //because your output page is html type not plain text type
} 

如果您将网页内容类型设为 header('Content-type: text/plain');

for ($x = 0; $x < $b; $x++) 
{   
 $q .= $data[$x];
 $r .= $data2[$x];
 $s .='Type: '.$q[$x] .' Quantity: '.$r[$x];
 echo "\n"; //for content type text/plain
} 

注意:在您的result snapshot中,问题是这样,但使用"<br />"因为html内容类型

echo '\n'; <----------- Will be treated as simply a string that contains \n
echo "\n"; <----------- Will be treated as a line break, not string

答案 1 :(得分:0)

为防止此问题被删除,答案是:  %0A ,在我的解决方案部分中说明。