【问题标题】:how to check for a linked string inside an array?如何检查数组中的链接字符串?
【发布时间】:2013-06-21 07:41:47
【问题描述】:

我有一个数组,让我们说,$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'可以占据任何位置。 注意:所有元素都是链接(锚定)。

【问题讨论】:

  • 你的实际数组是什么样子的?
  • 请在发布问题时修正缩进。这里没有人愿意阅读。
  • 这是什么意思 - 它们是链接?
  • 是的,它们是链接,意味着可以单击它们以转到目标链接单击创建内容将打开一个用于创建新内容的表单。

标签: php arrays string search


【解决方案1】:

如果你的真实数组是这样的

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 以返回所有符合您的正则表达式模式的项目:

$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 作为第三个参数并获取所有不匹配正则表达式模式的项目。

【讨论】:

  • array 就像我在问题中描述的那样,并在 cmets 中得到了澄清,感谢您的参与..
  • 如果您的阵列与您描述的一样 - 那么您为什么使用strip_tags
  • 这段代码不起作用,特别是因为使用strip_tags使锚定字符串成为普通字符串,没关系,但在上层(in_array("Create content",$breadcrumb))我不知道如何对锚定字符串进行conert..因此 strip_tags 目前没用。
  • 再一次 - 你的阵列是什么样的?喜欢我的回答还是喜欢你的问题?如果它就像你的问题一样 - 使用 strip_tags 是没用的,因为你的数组值中没有标签。
  • 它看起来就像我在我的问题中描述的那样,是的,我承认在那里使用 strip_tags 没有用。任何想法..?
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
相关资源
最近更新 更多