看板 PHP 關於我們 聯絡資訊
小弟我遇到一個問題 index.php 的一開頭若有一個 <?php require_once('a.php'); ?> 的話 會自動引入一個換行,導致我排版錯誤。 大家可以直接拿下面的code去run看看 我的瀏覽器:google chrmoe, IE9, FireFox10.0.2(不會有這問題) ================================== EXAMPLE ================================== [index.php] <?php require_once('a.php'); ?> <html> <head> <title>abc</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <div class="wrapper"> abcde<br /> </div> </body> </html> ================================== [style.css] body { text-align: center; margin: 0; padding: 0; background-color: #800080; } .wrapper { width: 1000px; margin: 0 auto; text-align: left; background-color: #C0C0C0; } ================================== [a.php] <?php define('AB', '1'); ?> ================================== 產出的原始碼 <html> <head> <title>abd</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <div class="wrapper">abcde<br /> </div> </body> </html> ================================== 問題: 我需要用到 "a.php" 可是一開頭的 require_once 會引入一個非預期的「換行」 該如何把這個非預期的換行給挪掉呢? 或者我該換用甚麼其他語法嗎? 感激不盡 ! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.78.106
kerash:a.php 的內容是?另外html前面的一行拿掉? 04/14 21:29
bibo9901:看看a.php是不是有輸出.. 04/14 21:30
bibo9901:<html>前面那個空行應不致影響排版 04/14 21:31
kerash:有時就怕很玄...所以才盡量能避免的就避掉 囧" 04/14 21:33
tkdmaf:BOM??? 04/14 21:34
ontario:a.php只有定義define(常數, ...)耶 ... 04/14 21:34
tkdmaf:你把檔案全部都設定成無bom模式看看。 04/14 21:35
ontario:要怎麼設呢?會有甚麼影響? 04/14 21:36
ontario:多書來的這一行位在<body>和<div id="wrapper">之間... 04/14 21:37
ontario:sorry, 是class="wrapper" ... 筆誤 04/14 21:37
ontario:<html>前的那一個空白行也有拿掉了 04/14 21:38
ontario:我做的實驗是,拿掉和留著require_once,會多一行 04/14 21:38
kerash:所以不管有沒有都會多一行嗎? 04/14 21:43
ontario:沒有require_once,就不會多一行 04/14 21:45
kerash:貼出你的 a.php 裡面的內容看看吧 04/14 21:46
ontario:有require_once的話,就會多一行在<body>和wrapper之間 04/14 21:46
ontario:a.php裡面都是定義常數的語法。例:define('AB','1'); 04/14 21:47
※ 編輯: ontario 來自: 118.168.78.106 (04/14 21:57)
kerash:能把網頁貼上來看看嗎?其實在中間出現有點神奇@@" 04/14 21:54
dio833:多一行是指最後產出的HTML原始檔多一個<br>還是多一個"\n"? 04/14 21:54
ontario:我有設定不同顏色,可以拿上面完整的code試試看 04/14 21:57
dio833:如果真的找不到,就HTML換成echo "<body><div class=.."; 04/14 21:58
ontario:我是用chrome的「檢查元素」發現的...不清楚是<br>還是\n 04/14 22:02
kerash:我看好像是 \n.... br就會是br ... QQ 04/14 22:03
kerash:測試確認了,是\n,那是因為你 abc 跟 div 不同行 04/14 22:04
kerash:解答就是誤會一場XD 04/14 22:04
dio833:我試過了正常耶,你可否把產出的的HTML原始碼貼出來 04/14 22:04
kerash:突然看到原PO你寫會導致排版錯誤 ... 如果會錯應該不會是\n 04/14 22:05
kerash:才對啊... @@ 04/14 22:05
dio833:樓上說的對,是誤會一場的可能很大 04/14 22:07
ontario:abc 跟 div 不同行,我這邊測試沒影響耶 ... 04/14 22:07
※ 編輯: ontario 來自: 118.168.78.106 (04/14 22:11)
kerash:那就照 dio 說的,把你看到的原始碼貼出來,順便拍你出現的 04/14 22:09
kerash:畫面看看@@.. 因為怕真的是誤會 04/14 22:09
dio833:你的意思是不同瀏覽器結果也會不同?那就跟Server端沒什麼關 04/14 22:13
ontario:產出原始碼重編在上面了。 04/14 22:13
dio833:係了,你要不先加<!DOCTYPE html PUBLIC..... 這個在第一行 04/14 22:14
dio833:你把你的產出原始碼放到Server端,用不同瀏覽器執行看看@@ 04/14 22:18
MOONRAKER:PHP大猜謎 我投BOM一票 :D 04/14 22:58
ontario:dio833...也試過了...一樣耶 04/14 23:21
dio833:影片我看了,你不該用Developer Tools來看,要看的是生成的 04/15 00:20
dio833:原始碼,透過developer tools看的東西,是經過整理過後的 04/15 00:20
dio833:這樣很容易造成雞同鴨講的狀況,你應該是透過php生成的原始 04/15 00:21
dio833:HTML程式拿來找問題,而不要聚焦在DOM工具上,所有的DOM都 04/15 00:22
dio833:有一定的容錯性跟解讀HTML的方式,你的重點要擺在php將你的 04/15 00:23
dio833:純文字檔改變了什麼!也就是你講兩次結果的純文字檔拿來比較 04/15 00:24
dio833:,看看兩個純文字檔差別在哪裡,再透過差別去判斷問題。 04/15 00:26
ontario:....請問,該怎麼看呢?sorry~我是自學的~有點弱XD 04/15 00:30
ontario:http://ppt.cc/oIhW 網民類似問題 04/15 00:35
ontario:http://ppt.cc/dHUD 網民類似問題二 04/15 00:35
ontario:http://ppt.cc/l0~9 網民類似問題三 04/15 00:36
MOONRAKER:我以前被DOM婊到兩次 第一次在php裡 第二次更玄在gif裡 04/15 01:20
MOONRAKER:第一次我把輸出檔案save as存下來用hex editor看 04/15 01:22
MOONRAKER:第二次我把gif拿來用hex editor看 所以-就是這樣! 04/15 01:22
kerash:用notepad++ 開起來後,編碼有uft-8 NO BOM,再另存 04/15 10:02
kerash:這是如果有遇到樓上說的BOM時可以測試的方法之一~ 04/15 10:03
ontario:按照kerash的notepad++方法測試,我的問題解掉了! 04/15 12:51
ontario:所以真的是因為看不見的"東西"造成的"編譯"錯誤?! 04/15 12:52
ontario:有建議的Hex Editor嗎?(我查到Hex Editor XVI32推嗎? 04/15 12:54
ontario:還有,檔首「有BOM」改成「無BOM」後,會有其他影響嗎? 04/15 13:11
ontario:google一下後,只能說真的好複雜...有較簡潔的敘述嗎? 04/15 13:12
ontario:謝謝所有熱心的各位,受小弟一大拜! 04/15 13:12
tkdmaf:其實這問題我很久以前就遇過,所以一開始就覺得是bom。 04/15 13:43
MOONRAKER:任何hex editor都可以,能看的就好了。絕不要把BOM直接 04/15 15:17
MOONRAKER:修掉,用文字editor轉換就可以。我都用total commander 04/15 15:18
MOONRAKER:贈送的viewer。 04/15 15:18
※ 編輯: ontario 來自: 219.84.60.175 (04/16 13:22)
ontario:非常感謝各位!希望以後有遇到類似問題者可以參考這兒。 04/16 13:23
pptsodog:ㄏ 05/21 16:31