我有一个数组,让我们说,$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'
可能占据任何位置。
注意:所有元素都是链接(锚定)。
答案 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模式不匹配的所有项目。