[转载][PHP]处理 UTF-8
转载自: PHP 最佳实践方法
此章节由 Alex Cabal 撰写,节录自 PHP Best Practices 并作为我们 UTF-8 建议的基础。
这不是开玩笑的,请小心与细心并前后一致地处理它。
PHP 至今在底层仍未支援 Unicode。而有许多方式可以确认 UTF-8 字串的处理是正确的,但通常不容易,还需要从上而下翻遍程序所有阶层,从 HTML、SQL 到 PHP。我们将会聚焦在简短的实践总结。
转载自: PHP 最佳实践方法
此章节由 Alex Cabal 撰写,节录自 PHP Best Practices 并作为我们 UTF-8 建议的基础。
PHP 至今在底层仍未支援 Unicode。而有许多方式可以确认 UTF-8 字串的处理是正确的,但通常不容易,还需要从上而下翻遍程序所有阶层,从 HTML、SQL 到 PHP。我们将会聚焦在简短的实践总结。
这是我在 Facebook 上看到的安全资讯,我觉得很重要,也适用在任何的网站套件上。
以 WordPress 为例,首先,请查看你的 WordPress 目录下是否有这些档案:
|
|
如果你在 Windows 上找不到容易上手的 Perl 整合开发环境(IDE),那你可以试试“DWIM Perl”。
“DWIM Perl”主要是由“Padre”、“StrawberryPerl”及一些常用的 CPAN 模组所组成,“DWIM”是“Do What I Mean”的缩写,因此可以看得到它的用心,其中:
档案下载: DWIM Perl
安装“DWIM Perl”时请安装在你的 D 糟,安装好之后只要执行“Padre, the Perl IDE”就会进入它的整合开发环境。
今天被一个 Bug 困住好久,可能是之前自己的手误造成!!
原因就是...MySQL 的字段名称竟然可以使用空白字符,而且还可以放在第一个字符,我真是学艺不精!!
经测试,连资料表的名称也可以使用空白字符:
CREATE TABLE ` test table` ( ` field 1` TINYINT NOT NULL , PRIMARY KEY ( ` field 1` ) ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
上面看得出我在资料表与字段的名称都用了空白字符吗? 而且还是放在第一个字符!
我想,如果想要陷害别人绝对可以用 MySQL 这一招。
至于处理空白字段名称的问题,你可以:
转载自: 酷壳 - 21 天教你学会 C++
下面是一个《Teach Yourself C++ in 21 Days》的流程图, 请各位程式设计师同仁认真领会。如果有必要, 你可以查看这个图书以作参照: http: //www.china-pub.com/27043
看完上面这个图片, 我在想, 我学习 C++ 有 12 年了, 好像 C++ 也没有学得特别懂, 看到 STL 和泛型, 还是很头大。不过, 我应该去考虑研究量子物理和生物化学, 这样, 我才能重返 98 年杀掉还在大学的我, 然后达到 21 天搞定 C++ 的目标。另外, 得要特别提醒刚刚开始学习 C++ 的朋友, 第 21 天的时候, 小心被人杀害。呵呵。
2017/03/21 更新:
可能是之前为了要相容旧版 IE (v9.0 之前) 的缘故,所以没发现到 JavaScript 还有 querySelector() 与 querySelectorAll() 这两个函式,它们的功能分别为:
- querySelector(): 回传第一个符合选择器规则的元素
- querySelectorAll(): 回传全部符合选择器规则的元素
从范例中可以得知,这两个函式遵循 CSS 语法,可以实现复杂的 CSS 选择器的层级、属性、分组、串联、伪元素...等判断,功能已不是 getElementById()、getElementsByClassName()、getElementsByTagName() 可以比拟!
当然复杂的 CSS 层级可改由 querySelector() 或 querySelectorAll() 来取得元素,不过若是目标明确,考量效率我还是用 getElementById() 来处理可能会比较好。
自订函式 $$() 改写如下:
function $$(element, isFirst){ if(isFirst === 1){ // 强制回传第一笔符合的元素 return(document.querySelector(element)); } else if(/^\#[\w\-]+/.test(element)){ // 以 $$("#id") 回传元素 return(document.getElementById(element.slice(1))); } else{ // 回传元素阵列 return(document.querySelectorAll(element)); } }($$() 增加了第二个参数: isFirst,若设为 1 则强制回传第一笔符合 CSS 选择器的元素,而非元素阵列)
JQuery 强大、方便的选择器 (Selector) 是 jQuery 不可或缺的功能之一。不过如果我们不想加载 jQuery 而只想使用类似 jQuery 选择器的功能,那可以用自订函式的方式做到:
function $$(element){ switch(element.charAt(0)){ case("#"): // 以 $$("#id") 回传元素 return(document.getElementById(element.slice(1))); case("."): // 以 $$(".class") 回传元素阵列,IE 要 v9.0 之后才支援 return(document.getElementsByClassName(element.slice(1))); default: // 以 $$("tag") 回传元素阵列 return(document.getElementsByTagName(element)); } }
或是单纯一点,仅传回指定 id 的元素就好:
function $$(element){ return(document.getElementById(element)); }
我把这个自订的函式命名为 $$(),用以与 jQuery 的工厂函式 $() 做区隔。
但是要注意,以上自订函式回传的都是 DOM 元素,与 jQuery 在其它操作上并不相同。
如有需要也可以用 jQuery.noConflict() 换掉 jQuery 的工厂函式 $(),ex:
var jq = jQuery.noConflict();
这样就能改用 jq() 来做为 jQuery 操作,而原本的 $() 只要再次重新定义为自订函式即可使用,不会与 jQuery 冲突。
帮大家试过用 € 与 ¥ 做为自订函式的名称,不过都失败,大家可以不用试了!
使用 JavaScrip 的程式库来开发网页的程式可以加快开发的速度,其中 jQuery 也是颇受欢迎的一员。
不过目前可以买得到的 jQuery 中文书籍实在寥寥可数,以下是最近阅读《网页设计-爱上jQuery》这本书的心得及评论 (作者是罗子洋)。 Read more
因为我在写程式所用的到的 MySQL,同时有 3.x 版及 5.x 版要处理,所以对 MySQL 的字符编码问题需要特别做研究,研究了一阵子之后,终于有了一些初步的心得,列出旧版及新版的 MySQL 做为比较:
Read more
我们解决了什么问题?我们创造了什么价值?
近期回响