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>
';
^
means match start of string 0
is match one 0 $
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.