谁能帮我解码为什么这不起作用?
$cssid = preg_replace("/'/", "", $cssid);
试图从一些html中去除单引号......
谢谢!H
编辑这是完整的功能 - 它旨在使用图像重建 Drupal 菜单,并将 CSS 类应用于每个项目,允许您选择所需的图像。需要去掉空格和撇号,否则 CSS 选择器会失败。
导致所有这些问题的菜单项的标题是:
What's new
你会认为非常无害。(除了那个单一的')
function primary_links_add_icons() {
$links = menu_primary_links();
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level\">\n";
if ($links) {
foreach ($links as $link) {
$link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
$cssid = str_replace(' ', '_', strip_tags($link));
$cssid = str_replace('\'', '', $cssid);
/*$link = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $link);*/
$output .= '<li id="'.$cssid.'">' . $link .'</li>';
};
$output .= '</ul>';
}
return $output;
}
编辑传奇继续......
我注意到我在 PHPMYADMIN 中收到以下错误:
找不到 mbstring PHP 扩展,您似乎正在使用多字节字符集。如果没有 mbstring 扩展,phpMyAdmin 无法正确拆分字符串,可能会导致意外结果。
我想知道这是否与它有关?
无论如何,SQL代码是:
('primary-links', 951, 0, 'http://www.google.com', '', 'What''s New',
一旦它被渲染为:
<li id="What's_New">
我创建了一个名为“What@s New”的菜单项,str_replace() 可以很好地处理它,所以这都是关于这个该死的撇号的。我想我同意,表达有效,但它必须是一个编码问题。它确实是一个适当的、常见的撇号,而不是变体之一,但由于某种原因 PHP 绝对无法识别它。
编辑哦上帝哦上帝 - 又是 Drupal... 似乎格式化所有链接的函数 l() 完全不受其输出重写的影响?!无论如何,这段代码都有效......
function primary_links_add_icons() {
$links = menu_primary_links();
$level_tmp = explode('-', key($links));
$level = $level_tmp[0];
$output = "<ul class=\"links-$level\">\n";
if ($links) {
foreach ($links as $link) {
$link['title'] = str_replace('\'', '', $link['title']);
$link = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']);
$cssid = str_replace(' ', '_', strip_tags($link));
/*$link = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $link);*/
$output .= '<li id="'.$cssid.'">' . $link .'</li>';
};
$output .= '</ul>';
}
return $output;
}
2 小时后,我可以继续为该站点设置主题...
非常感谢您的所有建议,我将在这篇文章中指出 drupal 片段的作者,希望其他人也能从中受益。