谁能帮我解释为什么这不起作用?
$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 中收到以下错误:
The mbstring PHP extension was not found and you seem to be using a multibyte charset. Without the mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.
不知是否与此有关?
在任何情况下,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 片段作者,希望其他人也能从中受益。
最佳答案
CSS 图像替换是一种更常用的菜单项替换方式:
首次安装:Menu Attributes module能够为每个菜单项分配 css id。 (这些属性可以在管理面板的菜单项编辑页面中设置)
然后使用css图片替换。 Here是一个很好的教程。
这是我在我的网站上使用的方法:
#primary-tv
{
display: block;
width: 90px;
height: 0px;
padding-top: 41px;
background: url(images/nghtv.png);
}
这是替换为 90 x 41 像素图像的示例
对于撇号替换:
$cssid = preg_replace("'","",htmlspecialchars($cssid, ENT_QUOTES));
关于php - preg_replace() str_replace() 撇号噩梦! - Drupal 菜单图像替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1404723/
是否有Ruby等效于Python的方法来获取在字符串末尾结束的子字符串,如str[3:]?必须输入字符串的长度并不方便。 最佳答案 传递最后一个元素=-1的范围str[3..-1] 关于python-Ruby相当于Pythonstr[3:],我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12978768/
假设我们有一个字符串str。如果str仅包含一个字符,例如str="1",则str[-1..1]返回1.但是如果str的size(length)比一个长,比如str="anythingelse",然后str[-1..1]返回""(空字符串)。为什么Ruby会这样解释字符串切片? 最佳答案 这种行为正是字符范围的工作方式。范围开始是-1,这是字符串中的最后一个字符。范围结束为1,即从开始算起的第二个位置。所以对于单字符字符串,这相当于0..1,也就是那个单个字符。对于双字符字符串,这是1..1,即第二个字符。对于三个字符的字符串,这是
除了协议(protocol)定义中的斜杠('http[s]://'、'ftp://'等)之外,我想替换URL中的所有多个斜杠。我该怎么做?此代码无一异常(exception)地替换:url.gsub(/\/\/+/,'/') 最佳答案 您只需排除任何以:开头的匹配项url.gsub(/([^:])\/\//,'\1/') 关于ruby正则表达式:replacedoubleslashesinURL,我们在StackOverflow上找到一个类似的问题: http
我haveaclass它公开了一个字符串值和一个int值(分别是命令输出和退出代码)。除了通过to_s和to_i公开它们之外,我还使用to_str和to_int,如下所示:classStatusdefto_s@outputendalias:to_str:to_sdefto_i@status.exitstatusendalias:to_int:to_iend我的想法是能够在尽可能多的情况下使用这个对象。将其强制转换为字符串或整数会增加可用性。例如,我可以将对象与字符串连接起来:a_string="Outputwas:"+results(我想用这个作为int强制转换的例子,但是Fixnum
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
在Ruby中,是否存在可以在Python类上定义的与__str__()方法等效的方法? 最佳答案 你可以使用to_s。http://briancarper.net/2006/09/26/ruby-to_s-vs-to_str/ 关于Ruby-相当于Python__str__()方法?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/134969/
我的用户有时输入的不是撇号('),而是看起来像撇号(‘)的符号,这会导致数据库出现一些问题。我试着用gsub替换它们,如下所示:result.gsub(/\‘/,"'")result.gsub(/‘/,"'")这些选项都不起作用-出现错误:syntaxerror,unexpected$end,expecting')'returnresult.gsub(/\‘/,"'").gsub("’","'")^它们是Ruby保留的吗?我该如何替换它们? 最佳答案 如果您的文本编辑器不直接支持像‘这样的UTF-8字符,您可以通过这种方式转义它们:
在我的大多数应用程序中,我都有一个current_user方法。为了避免像current_user.name这样的情况出现异常,其中current_user是nil,rails提供了try方法。这个问题是我需要记住在current_user可能是nil的地方使用try。我想使用NullObject模式来消除这种额外的开销。classNullUserdefmethod_missing(method_name,*args)nilendenddefcurrent_userreturnNullUser.newunlessUserSession.find@current_user||=UserS
我开始了一个小型网络项目并使用Drupal来构建它。到目前为止,还不错:您可以快速建立一个不错的面向CMS的网站,通过模块添加社交功能,并且您有一个广泛的API可以在一个架构良好的平台中进行自定义。现在问题来了:网站的增长超出了最初的计划,我发现自己正处于认真开始为它编写代码的境地。由于Drupal项目,我对PHP有了新的认识,但我想用Ruby来做。我会感觉更舒服,以后维护起来更容易,我可以在其他Ruby/Rails应用程序中重用它。随着时间的推移,我想我会用Ruby重写Drupal中的现有部分。基于此,问题是:是否有人将两者(成功或失败的故事)结合起来?这是一个相当大的决定,但我在G
什么是最优雅的做法'string'=>['s','st','str','stri','strin','string']我一直在想一个类轮,但我不能完全做到。欢迎任何解决方案,谢谢。 最佳答案 这个怎么样?s='string'res=s.length.times.map{|len|s[0..len]}res#=>["s","st","str","stri","strin","string"] 关于ruby-'string'到['s','st','str','stri','strin','s