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