PHP - 如何检查锚标记是否为空?

时间:2010-12-02 19:59:17

标签: php jquery preg-replace anchor

如何使用PHP或preg_match或JQuery检查锚标记是否为空?例如,如果achor标记看起来像:<a href="some_url"></a>我想跳过它。

我正在尝试向Superfish菜单添加数据库功能,但在Google Chrome中,我在子菜单中获得了空锚标记。在所有其他浏览器中,它可以正常工作。

我无法弄清楚问题是什么,所以我想如果我无法输出它可能有效的空锚。

你能帮忙吗?

谢谢!

<?php
//---------------------------------------------------------------
// INCLUDE DB CONNECTION
//---------------------------------------------------------------
require_once(ROOT_PATH.'connections/mysql.php');
require_once(ROOT_PATH.'controls/menu/error_messages.php');

//---------------------------------------------------------------
// GET MENU FROM DB
//---------------------------------------------------------------
$get_menu = mysqli_query($conn, "SELECT MenuId, Url, Target, Label, Title, Description, ParentId, OrdinalPosition, IsEnabled FROM menu WHERE (IsEnabled = 1) ORDER BY ParentId, OrdinalPosition, Label")
or die($dataaccess_error);

if(mysqli_num_rows($get_menu) > 0)
{
    // loop through menu items
    while ($menu_item = mysqli_fetch_assoc($get_menu))
    {
        $menu_data['MenuItem'][$menu_item['MenuId']] = $menu_item;
        $menu_data['MenuParent'][$menu_item['ParentId']][] = $menu_item['MenuId'];
    } 
}
else
{
    echo $no_menu_items_error;
}

//---------------------------------------------------------------
// BUILD MENU FUNCTION FOR SUPERFISH
//---------------------------------------------------------------
function HorizMenu($parent_id, $menu_data)
{
    $html = '';

    if (isset($menu_data['MenuParent'][$parent_id]))
    {
        $html = '<ul class="sf-menu">';
        foreach ($menu_data['MenuParent'][$parent_id] as $itemId)
        {
            // menu variables
            $url = $menu_data['MenuItem'][$itemId]['Url'];
            $target = $menu_data['MenuItem'][$itemId]['Target'];
            $title = $menu_data['MenuItem'][$itemId]['Title'];
            $label = $menu_data['MenuItem'][$itemId]['Label'];

            $html .= '<li class="current"><a href="'.$url.'" target="'.$target.'" title="'.$title.'">'.$label;

            // find childitems recursively
            $html .= HorizMenu($itemId, $menu_data);

            $html .= '</a></li>';
        }
        $html .= '</ul>';
    }

    return $html;
}

// output the menu
echo HorizMenu(0, $menu_data); 
?>

4 个答案:

答案 0 :(得分:1)

这应该用JavaScript(JQuery)来处理。您可以使用JQuery的“each”方法,如下所示:

$('a').each(function(index) {
   if( $(this).attr('href') == [something] ) {
      //Do Something
   }
});

答案 1 :(得分:0)

$(function(){
    $('a[href]').each(function(index) {
if(this.hash != ""){
 alert(this.hash);
}
});
});

也许是这样的

如果你想删除所有没有锚点

$(function(){
    $('a').each(function(index) {
if(this.hash == ""){
 $(this).detach();
}
});
});

在这里查看http://www.jsfiddle.net/dPrsp/

答案 2 :(得分:0)

使用jQuery,您可以使用:

$('a[href*=#]').each(function (i, item) {
    //Here, item is the DOM item with an anchor.
});

希望这有帮助! (参见:jQuery Attribute Contains Selector.each()

答案 3 :(得分:0)

正如我在上面的评论中已经说过的那样,你最好不要问问题是真正的问题,而不是关于你在执行方面遇到麻烦的傻瓜。那说:

$('a[href]').each(function(){
  var $this = $(this);
  if($this.text() == '' && $this.children().length = 0){
    $this.remove();
  }
});