很多做站的朋友都会有一个问题,在显示摘要的时候,如果摘要前有很多图片,那么显示出来的页面是不太正常的。比如,摘要显示100个字符,可是如果前面有很多图片,去掉图片代码后,100个字符已经几乎用完了。怎么办?
我个人是这样处理的。在PHP中,先用strip_tags去除内容中的标签,然后trim一下,再进行截取。这样的话就几乎没有什么问题了。
而这篇文章就有点意思,用作者的话来说,是无损html。来吧看看他写的内容。
最近在做一些内容搜索的工作,搜索出来的内容为html格式,列表部分需要显示每项内容的一部分。因为是html格式的内容,直接截取内容的前多少字符显 然不合适了。而如果直接去掉所有html格式然后再截取又无法达到想要的效果,再网上搜了一通之后,写下如下代码应该可以满足基本的要求了。(js写的, 因为容易调试)
JavaScript代码
- var br = {};
- br.spTags = ["img","br","hr"];
- br.contain = function(arr,it){
- for(var i=0,len=arr.length;i<len;i++){
- if(arr[i]==it){
- return true;
- }
- }
- return false;
- }
- br.subArtc = function(article,worldNum){
- var result = [];
-
- var wcount = 0;
- var startTags = [],endTags = [];
- var isInTag = false;
- for(var i=0,len=article.length;i<len;i++){
- var w = article[i];
- result.push(w);
- if(w=="<"){
- isInTag = true;
- }
- if(!isInTag){
- wcount++;
- if(wcount==worldNum){
- break;
- }
- }
- if(w==">"){
- isInTag = false;
- }
- }
-
- var j=0;
- isInTag = false;
- var isStartTag = true;
- var tagTemp = "";
- while(j<i){
- w = result[j];
- if(isInTag){
- if(w==">" || w==" " || w=="/"){
- isInTag = false;
- if(isStartTag){
- startTags.push(tagTemp);
- }else{
- endTags.push(tagTemp);
- }
- tagTemp = "";
- }
- if(isInTag){
- tagTemp+=w;
- }
- }
- if(w=="<"){
- isInTag = true;
- if(result[j+1]=="/"){
- isStartTag = false;
- j++;
- }else{
- isStartTag = true;
- }
- }
- j++;
- }
-
- var newStartTags = [];
- for(var x=0,len=startTags.length;x<len;x++){
- if(!br.contain(br.spTags,startTags[x])){
- newStartTags.push(startTags[x]);
- }
- }
-
- var unEndTagsCount = newStartTags.length - endTags.length;
- while(unEndTagsCount>0){
- result.push("<");
- result.push("/")
- result.push(newStartTags[unEndTagsCount-1]);
- result.push(">");
- unEndTagsCount--;
- }
- return result.join("");
- };
基本思路:
1.绕过标记,取得实际内容字数 ,如需要显示内容前100个字,绕过标记检索,得到第一百个字实际的索引。然后截取此索引前面的字串。
2.根据一得到的字串,得到这个字串中存在的开始标记和结束标记。注:此处的开始标记标识以"<"开通,且下一个字符不为"/"。
3.剔除2中 得到的开始标记中的不需要成对出现的标记。如br,img,hr等。
4.对比经过3处理的开始标记和2中得到的结束标记,没有配成对的在合适的位置为其配对。
此功能没有经过严格的测试,大家若有兴趣可以可以帮忙测试,有更好的想法的也可以回帖讨论。
--EOF--http://www.cnblogs.com/bravfing/archive/2010/05/02/1725924.html
我没有用PHP的试过,因为在PHP中本身对多字节的支持就不是特别的好不象js,认为中文就是一个字符。不过思路可以考虑一下,但真正要显示摘要的话,当然还是不要含 HTML代码,因为那可能会影响页面布局。
在QQ微勃上看到一条别人的转发,大意是:强生公司的泰诺林和美林口服液都已经被FDA禁用,已经开始召回。这两个药物在儿童降温时普遍使用。
然后还给了一个链接,由于我英文不好所以,我就贴上链接以及文章全文。
http://www.reuters.com/article/idUSTRE6401AK20100502
Johnson & Johnson's recalls infant, children's Tylenol, Motrin
- Johnson & Johnson's recalls infant, children's Tylenol, Motrin
-
- (Reuters) - The Food and Drug Administration on Saturday urged consumers to stop using liquid Tylenol, Motrin, Benadryl and Zyrtec medicines for children and infants after a broad recall announced by the manufacturer, although it said the chance of serious problems was remote.
-
- U.S. | Health
-
- Johnson & Johnson's consumer division announced a broad recall of products, including certain liquid infant's and children's Tylenol, Motrin, Zyrtec, and Benadryl products late on Friday.
-
- A full list of the over 40 affected products made by McNeil Consumer Healthcare is available at www.mcneilproductrecall.com
-
- "We want to be certain that consumers discontinue using these products," FDA Commissioner Margaret Hamburg said in a statement.
-
- "While the potential for serious health problems is remote, Americans deserve medications that are safe, effective and of the highest quality. We are investigating the products and facilities associated with this recall and will provide updates as we learn more," she said.
-
- McNeil said it was recalling the products in consultation with the FDA after discovering manufacturing deficiencies that could affect the quality, purity or potency of the medicines.
-
- The FDA said some of the products may not meet required quality standards, and parents and caregivers should stop administering them to children and switch to generic brands, which are not affected by the recall.
-
- They said consumers should not administer adult strength medicine to infants or children since that could result in serious harm.
-
- Some of the products affected by the recall may contain a higher concentration of active ingredient than specified; others contain inactive ingredients that may not meet internal testing requirements; and others may contain tiny particles, the FDA said.
-
- The FDA said the chance of an adverse reaction was remote, but urged consumers to contact their doctors and the FDA if their children exhibited any symptoms.
-
- McNeil Consumer said it was recalling all lots of the over-the-counter products. The medicines were manufactured in the United States and distributed in the United States, Canada, the Dominican Republic, Dubai, Fiji, Guam, Guatemala, Jamaica, Puerto Rico, Panama, Trinidad and Tobago, and Kuwait.
-
- It said consumers with questions about the recall could contact the company at 1-800-222-6036 or the website.
-
- (Reporting by Andrea Shalal-Esa; Editing by Eric Beech)
不知道具体是啥意思,只知道杯具了。我怕跨国。
原作者写的比较详细,其实,我自己也早已经这么做了,至少我单位使用的firefox原先是我在2003下使用的,现在换到win7,一切依然是这样的和谐。
请看原作者的文章,http://dan.febird.net/2009/10/49817-share-firefox-profile-in-diffirent-os.html:
这些天,经常在Win XP,Win7 以及 Ubuntu之间切换,每到一个系统,都要上网,都要听歌,都要看电影。这不得不让我寻找在不同操作系统之间共享程序的方法。
首先,在XP和Win7中共享程序,前提条件是该程序对注册表、系统特殊文件的依赖不是很强,并且有自修复能力。很多绿色软件以及做得比较完善的软件都有这个功能。但是像Ofice这样的软件,在WinXP中安装的,在Win7中直接打开肯定是不行的。
换一个系统,重新安一遍常用的程序是非常头大的事情,我的做法是,将XP的整个开始菜单文件夹(我的开始菜单文件夹是整理得反常有序的^_^)拷贝 到Win7的相应位置,这样,原来的程序60%能用了,然后再去WinXP中删除 像 Office这样的大程序,再在Win7中安装新的,至于小程序,不能共享使用的话装两遍也无所谓谓。
回到正题,由于Windows和Linux之间的天壤之别,因此只有一些封装得很有层次的软件或者数据才能共享,例如这个Firefox的 Profile。
浏览器是PC上使用率最高的软件之一,因此,半随着着浏览器的一些使用习惯、数据 是需要长期积累和培养的。对于Firefox,这里面最重要的莫非书签和插件了。
对于书签,有很多网络服务,例如dilicous,QQ Bookmark,Google Bookmarke 等等,但是经过我的使用,这些并没有原生的浏览器Bookmark来的好用。要不是书签层次不够深,就是同步功能太差,经常需要导入导出。我的解决方法是:
准备一个统一的Profile位置,我是放在 自己的 Document中,然后如果是XP,安装Firefox之后,到
C:\Documents and Settings/Administrator/Application Data/Mozilla/Firefox
下找到,Profile.ini, 然后将里面的内容改为你自己的实际保存的Profile的路径
[General]
StartWithLastProfile=1
[Profile0]
Name=default
IsRelative=0
Path=F:\MyDoc\Firefox\Profiles\hlt7qky5.default
同样,在Windows 7 中,装好 firefox 之后,同样的更改
E:\Users/febird/AppData/Roaming/Mozilla/Firefox
里面的 Prifoles.ini文件。将Profile地址填和上面相同的 Path.(也可以和WinXP 共享使用 firefox,这样的话,啥都不需要更改,但是必须保证 Profile位置必须为非系统位置可写!因为Win7的权限控制增强了,不然会报错的).
在Linux中,这Profile配置文件是存放在当前用户的根目录中的,例如,我使用febird用户,那么就在
/home/febird/.mozilla/firefox
中。注意,该文件夹为隐藏文件夹,需要在管理器中够选上“查看隐藏文件”才行。
OK,大功告成!这样就可以在本地的三操作系统中同步共享Firegfox书签,插件了,并且,像历史记录,表单数据、保存的密码等等都是完全同步的。当然,有一些和操作系统相关的插件是不能共享的,例如IE Tab(Linux下没IE,怎么Tab?)。
PS:
1.备份 Firefox ,只需要备份 自己的 Profiles即可。换个地方,照样用。
2. Firefox有个启动参数,可以管理不同的Profile。使用firefox -profilemanager (或者-P)参数。
--EOF--
firefox的启动参数加上profile后,你再把自己的profile目录拷贝出来,存放到firefox的目录下,就一切都解决了。当然我说的是win下,linux下没有试过。相信没啥大问题。profile目录里含有一切插件等内容。对了,profile目录下,还有一个cache目录,拷贝的时候,可以考虑先清空它,否则,也是上百兆的哦。
最近一段时间,许多网友经常在一些论坛或博客上看到一些看不懂的链接。为什么会看不懂呢?是因为链接文字常变换,且异常生疏。常见的链接词有诸如 “年少谌”、“亮米离”、“砂脊央”、“蛇脊央”、“台刘懂”、“啦畅莲”、“归闻铁”、“裔眒衍”、“层夏希”、“显叶卫”等。
这 些链接词还经常经常出现在谷歌热榜和百度搜索风云榜单上,笔者好奇就用百度试着搜索这些词,发现一些以这些链接词命名的博客,里面挂着测试运程的小软件, 需要输入姓名、出生年月和手机号,有网友反应说填写手机号进行这种测试会扣掉大量手机费,另外还需要警惕类似之前曝光的病毒挂马网站72up的情形。
这些网络推广者通过QQ等即时聊天工具进行营销的关键词,当大家发现这些词没有见过,就会好奇通过搜索引擎去找,而对搜索引擎来讲这些关键词网络上根本就 没有收录过,他们通过权重比较高的新浪和网易博客放置广告链接。很容易获得第一的排名,然后引导网友进入一个测试2010年运势的网站,通过注册手机号扣 取话费来骗取钱财。广大网友朋友需要注意了,遇到类似情况切莫输入手机号等个人信息,以防上当受骗。
原文来自:http://www.cnbeta.com/articles/110067.htm
结果马上就有人评论:最近qq上老是有人发给我消息,说什么快去搜索什么什么,那种词很难理解,就如文章所说,搜索下会排在第一,作者如果没发表此文的话,我就想发表了。被你抢占了,哈哈。
--EOF--
事实上这种营销策略很容易引起别人的反感,如果你是搜索装修,别人让你搜索装饰,或许你的感觉并没有这么强烈,但如果你搜索的是一些从来没有听过的词,你很可能是抱着试试看的心情去搜索,但如果一旦点到了病毒页,你估计以后对此类词语都会感觉很厌恶吧?这种人就和几年前那种500元左右就接企业网站的单是同一类人,只顾着眼前的利益,等把市场毁坏了之后,他却不从事这一行了。这种人才是真正应该被批判的
腾讯微勃的邀请称之为蒲公英种子。放出来与各位共享一下。
毕竟,蒲公英嘛,本来就是随风播种的,我这样也不算是违规啊。
20100502
- http://t.qq.com/invite/95d603e26d3ffbab415d
- http://t.qq.com/invite/9b3d3789e16510be4775
- http://t.qq.com/invite/b15024becc644a6f1d1f (X)
20100501:
- http://t.qq.com/invite/9071534b9a89bf89a233 (X)
- http://t.qq.com/invite/8d439cf611afe8b7d517 (X)
- http://t.qq.com/invite/36424ac418b9a7ab7749 (X)
(X)代表是已经被使用过的。