2012-11-02 39 views
1

我正在做一個簡單的連接,像這樣$string = $a.' '.$b.' '.$c$b是一個變量,可能爲空。因此,如果$b爲空,那麼$string = $a.' '.' '.$c,它似乎就像它在MySQL中。
然而,當我贊同它,$字符串只有$和$ C之間有一個空格時$b爲空,一個空白失蹤神祕。
任何人有任何想法回合這裏發生了什麼?
PHP中的級聯:缺少空格

附加說明:我這樣做是因爲我忘記在60小時解析之前檢查$ middlename是否爲null。所以,現在在我的數據庫,也有正確形式的名稱,如adam c. johnson和名稱不正確的格式如adam johnson有姓和名之間的兩個空格。如果有一種方法可以消除那些不正確名稱中的額外空間,它也可以解決我的問題。從評論

代碼:

$name = $list["firstname"].' '.$list["middlename"].' '.$list["lastname"]; 
if (strlen($name)>20) { 
    //echo $name."<br>"; 
    $name_cut=substr($name,0,20); 
    $stmt= $conn->stmt_init(); 
    $sql = 'UPDATE ? SET name=replace(name, \'?\', \'?\');'; 
    if ($stmt->prepare($sql)) { 
     $stmt->bind_param('sss', $table, $name_cut, $name); 
     $stmt->execute(); 
    } 
} 
+0

,我們可以看到一些你的PHP代碼? – slashingweapon

+4

您是否迴應網絡瀏覽器? Web瀏覽器不會顯示多個連續的空間。 – Darrrrrren

+0

$ name = $ list [「firstname」]。' '$列表[ 「中間名」。' 。」 $列表[ 「姓氏」]; \t if(strlen($ name)> 20){ \t \t // echo $ name。「
」; \t \t $ name_cut = SUBSTR($名,0,20); \t \t $ stmt = $ conn-> stmt_init(); \t \t $ sql ='UPDATE? SET'name' = replace('name',\'?',\'?\');'; \t \t如果($ stmt->製備($ SQL)){ \t \t \t $ stmt-> bind_param( 'SSS',$表,$ name_cut,$名); \t \t \t \t $ stmt->執行(); \t \t} – DanielZuo

回答

3

空白處理在http://www.w3.org/TR/html4/struct/text.html#h-9.1定義(在HTML4規範 - 它似乎並沒有在HTML5規範雖然我想它遵循相同的規則)。

特別是,用戶代理應該在生成輸出字間空間時摺疊輸入空白序列。這可以而且應該甚至在沒有語言信息進行

如果你要打印的實際空間,放的內容是什麼,你是<pre>,在一個元素中打印具有white-space: pre風格,或使用非 - 空間實體(&nbsp;)而不是空間。

1

檢查$列表[ 「中間名」]爲NULL

if ($list["middlename"]==NULL){ 
    $ name = $list["firstname"].' '.$list["lastname"]; 
} 
else{ 
    $ name = $list["firstname"].' '.$list["middlename"].' '.$list["lastname"]; 
} 
if (strlen($name)>20) { 
    //echo $name."<br>"; 
    $name_cut=substr($name,0,20); 
    $stmt= $conn->stmt_init(); 
    $sql = 'UPDATE ? SET name=replace(name, \'?\', \'?\');'; 
    if ($stmt->prepare($sql)) { 
     $stmt->bind_param('sss', $table, $name_cut, $name); 
     $stmt->execute(); 
    } 
}