Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach循环中的regex preg_replace_Php_Regex - Fatal编程技术网

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']);