简体   繁体   中英

How to replace 0 with an empty string in PHP

I'm building a report in PHP, and am really new to this language.

I read the documentation on preg_replace, but it's not working exactly as I expect.

Here's my code:

    $pattern = 0;
    $replacement = ' ';

    $report_output.= '
        <td>'.preg_replace($pattern, $replacement, round($row[$win_count])).'</td>
    ';

Instead of replacing a result of 0 with an empty string, it replaces all results with an empty string. The round works great like this:

    <td>'.round($row[$win_count]).'</td>

It's just when I put the preg_replace around it, it says 'phooey, I shall replace everything'. What am I doing wrong?

Try this instead

$pattern = '/^0$/';
$replacement = ' ';

$report_output.= '
    <td>'.preg_replace($pattern, $replacement, round($row[$win_count])).'</td>
';
  • The ^ means match start of string
  • The 0 is match one 0
  • The $ means match end of string

So it will only match '0' one zero start to finish and not something like this hell0 the end 0 wont be matched because the l is not the start of the string.

Your question is confusing if you want any 0 anywhere then use this instead

$pattern = '/0/';

With delimiters.

You can use a simple shorthand ternary.

Generally: $variable?: ''

If it is a false value, then the fallback empty string will be used.

Code: ( Demo )

printf(
    '"%s" vs "%s"',
    round($row[$win_count]),
    round($row[$win_count]) ?: ''
);

Output:

"0" vs ""

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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