如何检查数组中的链接字符串?

时间:2013-06-24 17:39:09

标签: php arrays string search

我有一个数组,让我们说,$breadcrumb = array("home" , "groups", "Create content", "some other element" "so on");我想检查它是否包含字符串“创建内容”然后取消设置字符串,但我的问题是“创建内容”是一个链接(锚定) )而不只是一个普通的字符串,我尝试in_array(),但没有成功。我如何寻找它,使其更清晰?

这是我的代码:

<?php
function phptemplate_breadcrumb($breadcrumb) {
    if (!empty($breadcrumb)) {
        if(in_array("Create content",$breadcrumb)){
            foreach($breadcrumb as $key => $value){
                if("Create content" == strip_tags($value)){
                    unset($breadcrumb[$key]);
                }
            }
        }
    }
    return '<div class="breadcrumb">'. implode(' › ', $breadcrumb) .'</div>';
}

注意:我知道如果我省略in_array()检查,但是如果'Create content'不在数组中,我不想不必要地遍历数组。

编辑:实际数组是:

array(
[0]=>home
[1]=> groups
[2]=> my group
[3]=> Create content
 )

此处'Create content'可能占据任何位置。 注意:所有元素都是链接(锚定)。

1 个答案:

答案 0 :(得分:0)

如果您的真实数组类似于

array(
    [0]=> <a href="/">home</a>
    [1]=> <a href="/path/">groups</a>
    [2]=> <a href="/subpath/">my group</a>
    [3]=> <a href="/another/path/">Create content</a>
)

然后您可以尝试使用preg-grep以便返回与您的regExp模式匹配的所有项目:

$content_links = preg_grep("/[YOUR REGEXP HERE]/", $breadcrumb);
// if you have matching items
if (0 < sizeof($content_links)) {
    // do some stuff - do `foreach` loop or use `array_diff`
}

<强> UPD : 或者甚至可以使用PREG_GREP_INVERT作为第三个参数,并获得与RegExp模式不匹配的所有项目。