Php foreach循环中的regex preg_replace
我有下面的简单替换工作Php foreach循环中的regex preg_replace,php,regex,Php,Regex,我有下面的简单替换工作 <?php $mydata= '15-2003'; $pattern = '/[-]/'; $replacement = ' '; echo preg_replace($pattern, $replacement, $mydata); ?> 2003年12月15日 然而,当我把它放在我的foreach循环中时,它似乎不起作用 我有这个 <?php foreach ($tests as $test): ?> <tr> <?ph
<?php
$mydata= '15-2003';
$pattern = '/[-]/';
$replacement = ' ';
echo preg_replace($pattern, $replacement, $mydata);
?>
2003年12月15日
然而,当我把它放在我的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);
}
这无法按预期工作,因为htmlout()
echo
会删除该值,而不是返回它
考虑更换
$mydata= htmlout($test['f']);
与
代码中出现的情况是,它只需打印出原始字符串,将NULL
返回到$mydata
,然后您回显一个NULL
,它不显示任何内容。请显示$tests包含的内容对于这样一个简单的替换,将很好地完成工作。我还注意到,在循环示例中,您将替换为空字符串,而不是第一个示例中的空格。您知道您可以在这里使用str\u replace
,对吗?什么是空字符串,它返回什么?(如果这是转换为unicode,您可能不会替换您认为是的同一个连字符…)首先,对于这种简单的替换,您应该使用str_replace
,这会更快。你能做一个简单的var\u转储($mydata)代码>?谢谢,我现在明白了。现在我有了这个工作,我将从preg_replace改为str_replace()
$mydata= html($test['f']);