【问题标题】:Creating line breaks without HTML Code in PHP/MySQL在 PHP/MySQL 中创建没有 HTML 代码的换行符
【发布时间】:2014-10-03 17:54:35
【问题描述】:

我有这个 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 换行符?

【问题讨论】:

标签: php mysql


【解决方案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);

【讨论】:

  • 我的第二行出现语法错误 - 我似乎找不到它
【解决方案2】:

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

您可以使用例如 JSON 将结构化数据存储到 MySQL 数据库中(比 XML 更有效,并且不像 PHP 的 serialize() 那样跨平台)。

<?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);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多