2
preg_replace_callback("/[0-9]*/", array(&$this, '_getPHPNumber'), $code);
private function _getPHPNumber($matches) {
return ($this->_getHtmlCode($matches[0], PHP::$Colors['number']));
}
private function _getHtmlCode($text, $color) {
$rows = array_filter(explode("\n", $text));
$count = count($rows);
$output = '';
for ($i = 0; $i < $count; $i++) {
$n = ($count > 1 ? ($i != $count - 1 ? "\n" : "") : "");
$output .= "<span style=\"color:{$color};\">{$rows[$i]}</span>{$n}";
}
return ($output);
}
上面看起來像這樣的輸出:PHP:正則表達式preg_replace_callback以匹配所有的數字在PHP
<span style="color:#FF0000;">152</span>
它的偉大工程,但如果數字是0,它就會從輸出中刪除。引起該問題的線路是$rows = array_filter(explode("\n", $text));
,其中_getHtmlCode
。確切原因是array_filter
。如果我刪除它,我的輸出會被完全破壞,但是會出現0。如果我離開它,0將被刪除。
有關如何解決此問題的任何想法?