2010-09-29 58 views
0

我怎樣可以去除空間/空格$ FULL_NAME,而我有這個:PHP:剝離空間,但不是中間的空間?

list($firstname, $lastname) = array_map('ucfirst', explode(' ', $full_name, 2)); 

或者,也許你應該剝去$名字,姓氏$的空間?

現在我有我想修復的這些問題: 如果您在暱稱之前搜索空格,例如「Jackson」,那麼它將顯示db中的每一行。

如果您只在字段(稱爲)$ _POST [「搜索」]中輸入空格,它也會顯示數據庫中的每一行。

這是我此刻的全碼:

if(isset($_POST["search"]) && !empty($_POST["search"])) { 
$full_name = strtolower(mysql_real_escape_string($_POST["search"])); 
$sex = mysql_real_escape_string($_POST["sex"]); 

list($firstname, $lastname) = array_map('ucfirst', explode(' ', $full_name, 2)); 

if (!$lastname) $lastname = $firstname; 
    $query = "SELECT firstname, lastname, id, user_name, sex, last_access, bostadsort FROM users WHERE (firstname LIKE '%$firstname%' OR lastname LIKE '%$lastname%')"; 
if(!empty($sex)) 
{ 
    $sql .= "AND sex = '$sex'"; 
} 
$result1 = mysql_query($query) or die(mysql_error()); 
$count = mysql_num_rows($result1); 

while($get = mysql_fetch_array ($result1)){ 
$Matchy = $get["firstname"] . " " . $get["lastname"]; 

$Matchy = str_replace(" ","",strtolower($Matchy)); 

if(str_replace(" ","",strtolower($full_name)) == $Matchy){ 
    echo "Match fully, redirect.."; 
    } 

$re_fname='<b>'.$firstname.'</b>'; 
$re_lname='<b>'.$lastname.'</b>'; 
$final_fname = str_ireplace($firstname, $re_fname, $get["firstname"]); 

$final_lname = str_ireplace($lastname, $re_lname, $get["lastname"]); 
echo $final_fname . " " .$final_lname."<br>"; 
} 
    echo "You searched for " . $firstname . " ". $lastname ." with sex: ". $sex . " results: " .$count; 

} 

回答

2

裝飾()RTRIM()和LTRIM()在$ FULL_NAME

$ FULL_NAME =修剪($ FULL_NAME);

0

不會修剪()工作..我沒看過全部內容,但是從你的問題,我認爲裝飾()會工作

$full_name = trim(strtolower(mysql_real_escape_string($_POST["search"]))); 
0

或者,如果你不想空間,空標籤等來搞亂你的拆分,可以使用:

list($firstname, $lastname) = array_map('ucfirst', 
    preg_split('/\s+/',$full_name, 2,PREG_SPLIT_NO_EMPTY)); 

這將分裂的空格(空格,製表符,換行符)的任何金額,將不會返回空的結果。