首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >foreach循环不工作

foreach循环不工作
EN

Stack Overflow用户
提问于 2011-03-21 22:25:07
回答 6查看 821关注 0票数 1

我正在尝试使用foreach循环在$_POST中搜索单词,但它不起作用?帮助是精准的。

代码语言:javascript
运行
复制
$unsafeWords = array('content-typ','bcc','cc');
foreach ($_POST as $key => $input) {
    foreach ($unsafeWords as $value) {
        $_POST = str_ireplace($value, "", $input) ;
    }
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-21 22:27:41

不要用字符串覆盖$_POST数组

代码语言:javascript
运行
复制
$unsafeWords = array('content-typ','bcc','cc');
foreach ($_POST as $key => $input) {
    foreach ($unsafeWords as $value) {
        $_POST[$key] = str_ireplace($value, "", $input) ;
    }
}

虽然我不喜欢覆盖原始的$_POST数组,但我更喜欢构建一个新的清理值数组

请注意,您不需要循环$unsafeWords数组,但可以将其作为数组直接传递给str_ireplace()

编辑

示例使用$unsafeWords数组作为str_ireplace()的参数,而不是使用foreach()遍历该数组并为每个条目调用str_ireplace()。

代码语言:javascript
运行
复制
$unsafeWords = array('content-type','bcc','cc');
foreach ($_POST as $key => $input) {
    $_POST[$key] = str_ireplace($unsafeWords, "", $input) ;
}

而且不是用空格替换,而是用空字符串替换(有效地从$_POST变量中删除不安全的字符串)

编辑2个

我想把这个放到foreach循环中也可以吧?

不完全是..。如果您只是将其作为额外的一行添加到循环中,那么您将覆盖之前的替换。按如下方式操作:

代码语言:javascript
运行
复制
$unsafeWords = array('content-type','bcc','cc');
foreach ($_POST as $key => $input) {
    $_POST[$key] = str_ireplace($unsafeWords, "", filter_var($input, FILTER_SANITIZE_STRIPPED)) ;
}
票数 5
EN

Stack Overflow用户

发布于 2011-03-21 22:27:30

您正试图用字符串值覆盖$_POST (数组)。正确的方法是:

代码语言:javascript
运行
复制
foreach ($_POST as &$input) {
    $input = str_ireplace($unsafeWords, array(), $input) ;
}

上面的代码还利用了其他几个特性(使用引用作为循环变量的foreachstr_ireplace接受数组)来缩短代码。

票数 1
EN

Stack Overflow用户

发布于 2011-03-21 22:28:37

不完全清楚你在问什么,但这是:

代码语言:javascript
运行
复制
 $_POST = str_ireplace($value, "", $input) ;

肯定不会像你期望的那样。您可能需要:

代码语言:javascript
运行
复制
 $_POST[$key] = str_ireplace($value, "", $input) ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5378975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档