php从数组中删除带有句点的项目

时间:2010-02-22 19:01:08

标签: php unset period

我有一个小部件的产品数组。

某些小部件的名称中包含保留期符号。

当php遇到句点时会出现问题,其余的窗口小部件名称将被忽略。我怎么能以字符串文字的形式阅读小部件,以便周期符号不会干扰?

unset($products[$widget]);

我可以用占位符字母替换句号,以便它不是保留字符,但我不愿意。

由于

2 个答案:

答案 0 :(得分:3)

使用其名称的标准化值作为键,将实际的小部件名称作为值。

示例:

function slug($str)
{
    $str = strtolower(trim($str));
    $str = preg_replace('/[^a-z0-9-]/', '-', $str);
    $str = preg_replace('/-.+/', "-", $str);
    return $str;
}

$products[slug($widget)] = $widget;

答案 1 :(得分:0)

我做了一些错误的假设。小部件名称还包含我没有提到的井号,因为我不知道#符号会影响代码的行为。

但事实证明,英镑符号毕竟引起了问题,但在使用unset命令时却没有。

我使用$ _GET ['']通过URL传递了小部件的名称。显然,接收get不喜欢#符号并删除pound#符号后的所有内容。

这是一个快速解释。 Soo ...让我说我传递了小部件名称“crank#x.55”。 如果我回显了$ _GET变量,你会看到“曲柄”,剩下的“#x.55”被剥离。

当我查看网址时,它显示“crank#x.55”(完整的小部件名称),这让我相信它已正确发送到$ _GET var。当我没有设置时,我认为句号(连接)符号做了些事情,这就是我创建原始问题的原因。 (我知道我需要在未来的问题中包含更多的事实)< - 学习过程。

我通过简单地用@符号替换井号来解决问题,然后一旦数据被发布,使用preg_replace将@符号转换回磅。类似于像素的回答只是为了我的目的而适应了一点。

由于