PHP学习之Smarty+CSS+DIV页面居中问题
在Dreamweaver 中寫了個(gè)簡單的的index.php:
<?php
include_once("./class.config.php");
$Smarty->display("Index.html");
?>
順手在標(biāo)題中輸入了幾個(gè)字:企業(yè)資源管理系統(tǒng),index.html是使用div+css進(jìn)行布局的,單獨(dú)打開index.html可以看到居中顯示,而調(diào)用smarty后總是居左顯示.
后來用ultraedit打開index.php,發(fā)現(xiàn)文件內(nèi)容是:
<title>企業(yè)資源管理系統(tǒng)</title>
<?php
include_once("./class.config.php");
$Smarty->display("Index.html");
?>
將<title>企業(yè)資源管理系統(tǒng)</title>去掉后顯示正常.
?
?
引用原文:
發(fā)現(xiàn)自己總在走前人走過的路,犯前人犯過的錯(cuò)...
最近使用smarty+CSS模板,遇到了部分CSS無法解析的問題,嘗試了很多方法,在幾乎放棄的時(shí)候找到了這篇文章,一看日期,竟然是2006年11月的...
新項(xiàng)目完全采用UTF-8編碼,這是我的夙愿,可就是這個(gè)麻煩的UTF-8編碼,讓我鬧心了數(shù)小時(shí)!
今天下午制作好了頁面的模板,當(dāng)載入Smarty運(yùn)行的時(shí)候,發(fā)現(xiàn)在Firefox下正常顯示,而在IE下,原本好好居中顯示的頁面一下變得偏左了,而且部分CSS也無法載入,字體極其難看!查閱代碼,無法找出任何破綻,而不用Smarty轉(zhuǎn)而采用原始的PHP+HTML混寫的時(shí)候則無此現(xiàn)象,因此開始懷疑Smarty有問題,上phpchina.cn求助,無人解答;自己又下載了Smarty的最新版本,依然無法解決這個(gè)故障,心灰意冷,甚至打算在項(xiàng)目中放棄Smarty。
根據(jù)以往的經(jīng)驗(yàn),我開始懷疑是當(dāng)PHP輸出HTML的時(shí)候向其中加入了額外的不可見代碼,于是將PHP輸出的內(nèi)容原封不動(dòng)保存為HTML,然后提交到validator.w3.org進(jìn)行XHTML驗(yàn)證,果然,驗(yàn)證失敗,提示文件頭部被加入了BOM(萬國碼檔案簽名:Byte Order Mark, U+FEFF)標(biāo)記,媽的,就是這個(gè)垃圾標(biāo)記,已經(jīng)不是第一次害我了!
于是,重新打開DM和UltraEdit重新對(duì)PHP頁面以及模板頁面進(jìn)行編碼轉(zhuǎn)換,去除了其中的BOM標(biāo)記,一切正常!
這里附上一篇寫的很全面的有關(guān)BOM的文章,希望能幫助和我一樣受害的人。
=================================================================
utf-8 保存文件的 bom 問題
大家都知道 utf-8 是一種在web應(yīng)用中經(jīng)常使用的一種 unicode 字符的編碼方式,使用 utf-8 的好處在于它是一種變長的編碼方式,對(duì)于 ANSII 碼編碼長度為1個(gè)字節(jié),這樣的話在傳輸大量 ASCII 字符集的網(wǎng)頁時(shí),可以大量節(jié)約網(wǎng)絡(luò)帶寬。不過如果大家使用 utf-8 編碼來編寫網(wǎng)頁的時(shí)候, 往往會(huì)因?yàn)?bom (Byte Order Mark) 的問題,導(dǎo)致網(wǎng)頁中經(jīng)常出現(xiàn)一些不明的空行或者亂碼字符。 這些都是因?yàn)?utf-8 編碼方式對(duì)于 bom 不是強(qiáng)制的。因此 utf-8 編碼在保存文件的時(shí)候,會(huì)出現(xiàn)不同的處理方式。
比如有的瀏覽器(FireFox)可以自動(dòng)過濾掉所有 utf-8 bom , 有的 (IE) 只能過濾掉一次 bom (為什么是一次? 當(dāng)你出現(xiàn) Include 多次文件時(shí)就會(huì)碰上這個(gè)問題了:) );
對(duì)此 w3.org 標(biāo)準(zhǔn) FAQ 中對(duì)此問題有一個(gè)專門的描述:
http://www.w3.org/International/questions/qa-utf8-bom
在此個(gè)人認(rèn)為對(duì)于這個(gè)問題最好的處理方式就是在編輯(保存)文件的時(shí)候統(tǒng)一去除 utf-8 bom , 同時(shí)又必須使得編輯器可以正確讀出 utf-8 字符集,但可惜目前 windows 系統(tǒng)中對(duì)于保存文件的處理方式缺省情款下都會(huì)自動(dòng)加上 bom.
(通過抓包工具分析, google 中文頁面統(tǒng)一使用 utf-8 編碼方式,下載的頁面中沒有帶有 bom 標(biāo)識(shí))
操作系統(tǒng): WindowsXP Professional , 缺省字符集:中文
1) notepad : 可以自動(dòng)識(shí)別出沒有帶 bom 的 utf-8 編碼格式文件,但不可以控制保存文件時(shí)是否添加 bom , 如果保存文件,那么會(huì)統(tǒng)一添加 bom 。
2)editplus : 不能自動(dòng)識(shí)別出沒有 bom 的 utf-8 編碼格式文件,保存文件為 utf-8 時(shí)會(huì)自動(dòng)添加 bom
3) UltraEdit : 對(duì)于字符編碼的功能最為強(qiáng)大, 可以自動(dòng)識(shí)別帶 bom 和不帶 bom 的 utf-8 文件 (可以配置) ; 保存的時(shí)候可以通過配置選擇是否添加 bom.
(特別需要注意的是,保存一個(gè)新建立的文件時(shí),需要選擇另存為 utf-8 no bom 格式)
后來發(fā)現(xiàn) Notepad ++ 也對(duì)于 utf-8 bom 支持比較好,推薦大家使用。
轉(zhuǎn)載于:https://www.cnblogs.com/GarfieldTom/archive/2009/06/02/1494638.html
總結(jié)
以上是生活随笔為你收集整理的PHP学习之Smarty+CSS+DIV页面居中问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何向微软提交 Windows 7 测试
- 下一篇: 壮阔