在PHP中删除多个逗号

时间:2012-04-12 19:11:16

标签: php codeigniter replace

很抱歉,如果这是非常基本的,但我只是在学习PHP。

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

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

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

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

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

希望这是一个非常简单的事情,但我已经尝试过几件事,似乎无法做到正确。

非常感谢

7 个答案:

答案 0 :(得分:3)

使用数组来保存值,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);

答案 1 :(得分:2)

替换

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

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

您可以稍后修复输出:

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>';

答案 4 :(得分:1)

您可以使用三元运算符来检查每个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>

答案 5 :(得分:1)

建议你习惯数组函数,然后崩溃;假设你的$ 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的内容 - 绕过所有空箱。

答案 6 :(得分:0)

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

示例:

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