foreach循环中的正则表达式preg_replace

时间:2012-07-16 12:35:50

标签: php regex

我有以下简单的替换工作

<?php
$mydata= '15-2003';
$pattern = '/[-]/';
$replacement = ' ';
echo preg_replace($pattern, $replacement, $mydata);
?>

哪个输出15 2003

然而,当我把它放在我的foreach循环中时它似乎不起作用?

我有这个

<?php foreach ($tests as $test): ?>
<tr>
<?php
$mydata= htmlout($test['f']);
$pattern = '/[-]/';
$replacement = '';
echo preg_replace($pattern, $replacement, $mydata);
?>
<?php endforeach; ?>

哪个输出15-2003 我在哪里错了?

htmlout是以下自定义函数。

<?php
function html($text)
{
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}
function htmlout($text)
{
echo html($text);
}

当我做var_dump($ mydata); 我得到NULL

1 个答案:

答案 0 :(得分:1)

这不符合预期的效果,因为htmlout() echo是值而不是return

考虑更换

$mydata= htmlout($test['f']);

$mydata= html($test['f']);

您的代码中发生的事情是,它只是打印出原始字符串,将NULL返回到$mydata,然后您回显NULL,但不会显示任何内容。