繁体   English   中英

在PHP中删除多个逗号

[英]Remove multiple commas in PHP

对不起,如果这是非常基本但我只是在学习PHP。

我有一些看起来像的代码:

<h4><?=$prop['house_number']?>, <?=$prop['street']?>, <?=$prop['town']?></h4>

这是从数据库中带回来的,例如:55,主要街道,城镇名称

当地址不包含街道名称时,它会返回例如:55 ,, townname。

我想知道如何删除商家,所以它只是带回来,例如:55,townname。

希望这是一个非常简单的,但我已经尝试了一些东西,似乎无法做到正确。

非常感谢

使用数组来保存值,并使用implode()

像这样的东西:

$result = array();

if (!empty($prop['house_number'])
    $result[] = $prop['house_number'];

if (!empty($prop['street'])
    $result[] = $prop['street'];

if (!empty($prop['town'])
    $result[] = $prop['town'];

$result = implode(',',$result);

更换

<?=$prop['street']?>,

<?php if(strlen($prop['street'] > 0) echo $prop['street'] . ", "; ?>

旧代码输出街道名称后跟逗号,新代码检查街道名称是否长于0个字符,如果是,则仅输出。

你可以使用内联条件,试试这个:

<?php
    $house_num=($prop['house_number']) ? $prop['house_number'].',' : null;
    $street=($prop['street']) ? $prop['street'].',' : null;
    $town=($prop['town']) ? $prop['town'] : null;
    $h4=$house.' '.$street.' '.$town;
?>

然后在使用中:

<h4><?php echo($h4); ?></h4>

您可以稍后修复输出:

ob_start();
?>
<h4><?=$prop['house_number']?>, <?=$prop['street']?>, <?=$prop['town']?></h4>
<?php
echo strtr(ob_end_clean(), ', , ', ', ');

但实际上有一百种方法可以解决它,这只是一种方法。

echo '<h4>' , implode(', ', array_filter(
        array($prop['house_number'], $prop['street'], $prop['town']), 'strlen')
      ),  '</h4>';

您可以使用三元运算符来检查每个var是否为空。 看看http://davidwalsh.name/php-shorthand-if-else-ternary-operators

然后代码看起来像:

<h4>
<?=!empty($prop['house_number']) ? $prop['house_number'].', ' : ''?>
<?=!empty($prop['street']) ? $prop['street'].', ' : ''?>
<?=!empty($prop['town']) ? $prop['town'].', ' : ''?>
</h4>

建议你习惯数组函数,并且内爆; 假设你的$ prop数组看起来像这样:

$prop = array(
    "house_number" => 55,
    "street" => "",
    "town" => "Houston"
);

您可以过滤数组并使用implode:

function filter_empty( $a ) {
    if( strlen(trim($a)) > 0 ) return( true );
    return( false );
}

$filtered = array_filter( $prop, 'filter_empty' );

从那里,阵列将如下所示:

print_r( $filtered );
/*
Array
(
    [house_number] => 55
    [town] => Houston
)
*/

人类可读的文本行很简单: echo implode( ", ", $filtered );

输出类似55, Houston东西 - 绕过所有的空箱。

这只是另一种方式,你可以将地址字符串保存在一个变量中,用一个替换双逗号[,,]。 类似于hakre是sugessting的想法。

例:

<?php $str = $prop['house_number']  . ',' . $prop['street'] . ',' . $prop['town']?> ;?>
<h4><?=str_replace(',,','',$str);?></h4>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM