上一次提到这个问题的时候,似乎感觉问题解决了,但是后来发现,上次的代码并不能很好的解决问题,很多中英文混杂的标题无法正确的显示。
为此,不得不再次研究一下代码,将代码做了一下精减,反而效果还是不错的。具体代码如下:
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | function cleanup_mail($string) { $string = str_replace(array("\r", "\n", "\r\n"), "", $string); $string = trim($string); return $string; } function utf8_encode_c($string) { $charset = 'utf-8'; $encoded_string = $string; if(strtolower($charset) == 'utf-8' && preg_match('/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff]/', $string)) { // Define start delimimter, end delimiter and spacer $end = "?="; $start = "=?" . $charset . "?B?"; // Encode the string $encoded_string = base64_encode($encoded_string); $encoded_string = $start . $encoded_string . $end; } return $encoded_string; } function mail_send($recipients, $headers, $body) { // XXX: use Mail_Queue... maybe $backend = mail_backend(); if (!isset($headers['Content-Type'])) { $headers['Content-Type'] = 'text/plain; charset=UTF-8'; $headers['Subject'] = utf8_encode_c(cleanup_mail($headers['Subject'])); } assert($backend); // throws an error if it's bad $sent = $backend->send($recipients, $headers, $body); if (PEAR::isError($sent)) { common_log(LOG_ERR, 'Email error: ' . $sent->getMessage()); return false; } return true; } |
Ajax,Asynchronous JavaScript and XML,异步JavaScript和xml。怎么发音呢?传说这是一个希腊文,Aias(Eye-yas),也许可以读作:EYE-yaks,爱牙科斯〜〜〜这两天看到一个教程,上直接念成阿甲克斯,也挺朗朗上口的。其实怎么读,无所谓的。
最近在开发糗微的过程中,不得不学习通过jQuery来实现Ajax。把这个学习过程记录下来,和大家分享。
这个教程使用语言:jQuery,难度:初学者;时间估计:20分钟。
什么是AJAX?
名词解释:XHR,是XML HTTP request的简称。我想大部分人在网上冲浪的时候都体会过Ajax
- 在GMAIL中,当你从收信箱转换至草稿箱,你会发现,网页的部分改变了,但是网页并没有整体刷新。你还在同一个页面上的感觉,地址栏的地址也没有发生任何变化。有人会问这是不是一个网页框架技术?我们观察原代码,找不到任何iframe的影子。
- 在Google Reader当中,你点击了一个feed,内容随之改变,但是并没有重定向网页的感觉。
- 在Google Maps当中,你扩大和缩小地图,地图变化了,但并没有整个的更新网页。
- 在live spaces当中评论别人的博客,留言提交上去了,网页并未发生大的变化。
对,你感觉不到你在与服务器交换数据的过程,这一过程全部放到后台异步完成。在之前,人们要实现与服务器交换数据,浏览器会这样做,首先产生一个访问请求,这时浏览器刷新成空白页,等待服务器的响应,接到响应之后,全新的呈现一个网页在浏览器上。这样就会看到一个明显的网页变换过程。而有一Ajax之后,网页的显示可能就不需要刷新和重定向了。如果你只是想修改部分的网页内容,而不是全部,这一技术无疑是你最想要的。这有点象动态网页技术DHTML+远程访问。这一技术的最大用处就是,当你与服务器交换数据时,不影响你对网页内其它内容的继续阅读与操作。
上手AJAX
jQuery对于Ajax的全局设置
对于一个静态内容的访问,也许我们希望浏览器缓存网页内容,以便下一次访问的时候能提高效率。但是因为Ajax的大部分应用都是数据库的访问,内容随时变化,这个时候我们不希望浏览器缓存网页内容。jQuery提供了一个全局使用的函数,$.ajaxSetup ();我们可以把自己需要的全局操作以参数的形式传进去就可以了。
1 2 3 | $.ajaxSetup({ cache: false }); |
1. load(): 远程调取html内容,并将其插入至指定的位置;
事实上,大部分的Ajax的应用都是实现这个过程,动态地在网页的某个位置加入一段互动显示效果。使用jQuery当中的load()函数可以很方便地实现这一过程。
基本实现
假设网页上有一个load按钮,它会响应鼠标click事件。我们需要写一段代码来具体如何响应这个click事件。最基本的,我们需要点击按钮后有一个等待的动画,消除人们的误会,让人看到正在响应鼠标单击事件,这时后台向服务器提交一个指定网页的请求。当网页内容返回以后,将这段网页内容加载至结果显示区域去。
1 2 3 4 5 6 7 8 9 10 | $.ajaxSetup ({ cache: false }); var ajax_load = "<img src='img/load.gif' alt='loading...' />"; // load() functions var loadUrl = "ajax/load.php"; $("#load_basic").click(function(){ $("#result").html(ajax_load).load(loadUrl); }); |
1-3行,让浏览器对内容不缓网页内容;
4行,定义一个动画地址,显示正在响应事件;
7行,定义访问请求的地址;
8行,$(“#load_bashic”)相当于getElementById(load_basic),获取网页当中id为load_basic的对象。定义它被点击后,id为result的对象首先显示4行当中定义的动画,同时提交7行定义的请求,当请求返回之后替换刚才显示的动画,显示在result对象当中。
[......]
wordPress plugins繁多,如何选择自己需要的呢?这是个问题。安装插件有一个不好,那就是响应时间会变成。所以合理地选择插件非常必要。
下面的六个插件都是使用用户评价很高,对于加速网站访问速度,推广网站,防止垃圾评论都是十分必要的。
1. WP Super Cache
WP Super Cache 可以加速静态网页的生成。设置有些复杂。 它可以有效地提供页面反应速度百分之二百至三百。[......]
在statusNet当中在connect设置当中可以注册使用手机短信,就是sms了。但是当你打开下拉菜单,没有中国的手机服务运营商。没有中文短信平台的支持,这对于中文化的statusNet微博而言是非常遗憾的一件事情。
我分析过它的短信发送机制,其实是基于Email的发送方式。也就是说,它把sms当成一个使用手机号码做为用户名的邮箱做为发送地址的。比如你的手机号是13912345678,那么你捆绑的手机邮箱就是13912345678@139.com,而StatusNet就向这个地址发送邮件,你收到之后回复的来源信箱也就是它了。
对于日本AU及softbank的短信息地址,至今还没有找到。很大的原因是它们对于垃圾短信的防止,所以地址并未公开。但是还是有很多人分析出了部分的手机短信息地址。只是因为它分得太细了,什么关东关西,北海九洲,我无法分清哪个手机号是属于哪里的,也就没有办法了。这可能需要它们的数据库了。
| 関東・中部 | %s@cmail.ido.ne.jp |
| 北海道 | %s@dct.dion.ne.jp |
| 東北 | %s@tct.dion.ne.jp |
| 北陸 | %s@hct.dion.ne.jp |
| 関西 | %s@kct.dion.ne.jp |
| 中国 | %s@cct.dion.ne.jp |
| 四国 | %s@sct.dion.ne.jp |
| 九州 | %s@qct.dion.ne.jp |
| 沖縄 | %s@oct.dion.ne.jp |
既然原理大约是这样,就按这个思路办吧。具体是否可行,我并没有去实验,因为本人没有中国的手机可以使用。但是我还是把办法写在这里,谁有兴趣可以自己试试。
打开数据库,找到sms_carrier数据表,增加三个字段,具体如下图:[......]



近期评论