在PHP / MySQL中创建没有HTML代码的换行符

时间:2014-10-03 17:54:36

标签: php mysql

我有这个PHP代码:

$address='';
if($_POST["address1"] > '') {
    $address.=$_POST["address1"];
}
if($_POST["address2"] > '') {
    $address.=$_POST["address2"];
}
if($_POST["address3"] > '') {
    $address.=$_POST["address3"];
}
if($_POST["town"] > '') {
    $address.=$_POST["town"];
}
if($_POST["county"] > '') {
    $address.=$_POST["county"];
}
if($_POST["postcode"] > '') {
    $address.=$_POST["postcode"];
}

然后使用$address变量

将一行插入数据库

我如何确保每个地址行都有一个非html换行符?

2 个答案:

答案 0 :(得分:1)

将地址字段放在数组中,然后使用implode()将它们与换行符结合起来:

$addr_array = array();
foreach (array('address1', 'address2', 'address3', 'town', 'county', 'postcode') as $field) {
    if ($_POST[$field] > '') {
        $addr_array[] = $_POST[$field];
    }
}
$address = implode("\n", $addr_array);

答案 1 :(得分:0)

虽然其他人提出了破解地址的方法,但我建议建议在数据库中以结构化方式保存地址。这一点很重要,因为并非所有国家在代表地址时都遵循相同的顺序:例如,某些欧洲国家将邮政编码放在城市名称之前等等。

您可以使用例如JSON将结构化数据存储到MySQL数据库中(与PHP和serialize()不同,比XML和跨平台更高效。)

<?php
$address = array();
$fields = array('address1', 'address2', 'address3', 'town', 'county', 'postcode');
foreach($k in $fields) {
    if(!empty($_POST[$k])) {
        $address[$k] = $_POST['k'];
    }
}
// Store this single variable in the database
$store = json_encode($address);
?>

(重要提示:在您的代码中,您似乎并未过滤/验证用户的输入。我强烈建议您这样做,删除HTML代码,检查有效的Unicode等等!通过正确过滤用户输入,您可以保护您的代码免受80%的常见黑客攻击)

然后,当您从数据库中读取内容时,您只需使用以下命令重新获取数组:

<?php
$result = // ... Obtain the data from the database
$result['address'] // This variable contains your address

$address = json_decode($result['address'], true);
?>