我有一个 MySQL 的“people”表作为网站的一部分,例如:
| people_id | firstname | lastname | ----------------------------------------- | 1 | John | Lennon | | 2 | Paul | McCartney | | 3 | George | Harrison | | 4 | Ringo | Starr | | . | . | . |
My table has about 2000 rows.
I also have a "news" section on the web site. Frequently, these news items contain references to "people", e.g.
John Lennon and Paul McCartney wrote some of the most popular songs in the history of rock music.
Is it possible (or reasonable/advisable) to automatically parse each item of news to look for "people" who are in the database, and then turn them into links. So, for example, the above text would be turned into this (or something functionally equivalent):
<a href="/people/1>John Lennon</a> and <a href="/people/2">Paul McCartney</a> wrote some of the most popular songs in the history of rock music.
执行此操作的最佳方法是什么?我在 php 中使用正则表达式进行了几次失败的尝试,但我想这不是最好的方法。我不太了解 javascript(及其框架),但如果这样做有意义,我会很乐意使用它。
这不是网站的基本功能(但我觉得这是一个很好的补充)所以我宁愿省略这样的功能也不愿显着增加页面加载时间。
编辑
为了缩短篇幅,我在最初的问题中省略了一些细节。
事实上它是一个足球俱乐部的网站——所有的“人”都是该网站的成员(member),可以登录、添加和编辑新闻报道(例如比赛报道),他们可以在其中经常提到其他“人”。因此,不仅仅是我添加了新闻故事 - 其他(大约)2000 名用户也可以添加它们。
虽然成员资格受到限制,因为人们必须在加入之前获得批准,但系统必须能够应对复杂的情况,例如名字不寻常的人,并且存在不止一个人同名的情况.
我已经实现了一种解决方案,其中我使用一种专有代码来标记人们的名字(例如 [p=1]John Lennon[/p]),但我发现,在 2000该网站的用户中,只有少数人会使用它。
就其值(value)而言,该网站是 www.ouafc.com,新闻报道的示例位于 www.ouafc.com/news/312。
最佳答案
我不太了解 php,但这里有一个使用 jQuery 1.4 的快速 JavaScript:
<div id="maindiv">
John Lennon and Paul McCartney wrote some of the most popular songs in the history of rock music.
</div>
<script>
$(document).ready(function(){
myPage.linkify($("#maindiv"));
})
var myPage = {
map: {
"John Lennon": 1,
"Paul McCartney": 2,
"Rock Music": 3
},
linkify: function(domEl){
var htmlcopy = domEl.html();
function buildLink(txt, loc){
return '<a "href = /blah/'+loc+'>'+txt+'</a>';
}
for(i in myPage.map){
var tmpStr = new RegExp(i,"gi");
htmlcopy = htmlcopy.replace( tmpStr, buildLink(i, myPage.map[i]) );
}
domEl.html(htmlcopy);
}
}
</script>
myPage.map 将从数据库构建在服务器端。这也可以是对 Ajax 函数(将获取 map )的回调,这样它就不会阻止页面的其余部分执行其操作。
关于php - 为有限大小的数据库表的内容解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193414/
我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und