2012-01-05 22 views
12

Tôi đang cố gắng thay thế PHP như ASP Replace. Hàm này chỉ trả về một giá trị trống không?Thay thế và viết thường PHP

$zonename=mysql_real_escape_string($_POST["zonename"]); 
    $zname_clean =""; # blank string 
    $zname_clean = $zonename; # fill string with the post form 
    $zname_clean = str_replace($zname_clean, " ", ""); # remove white space 

Đó là mã của tôi. Ví dụ Zonename sẽ là "Header Left", tôi muốn loại bỏ viết hoa và cũng loại bỏ khoảng trắng.

Làm cách nào để xóa khoảng trắng và chuyển đổi kiểu chữ đó và cũng có cách nào để làm việc này hiệu quả hơn không?

+4

sai trật tự tham số -> http://php.net/manual/en/function.str-replace.php – ManseUK

+0

Cám ơn @ManseUK rằng – TheBlackBenzKid

Trả lời

34
// strip out all whitespace 
$zname_clean = preg_replace('/\s*/', '', $zname_clean); 
// convert the string to all lowercase 
$zname_clean = strtolower($zname_clean); 

Xem sách hướng dẫn PHP cho strtolower()preg_replace().

+0

Tôi thích mã này. – TheBlackBenzKid

+0

Regex ở đây là sai. Nó phải là/\ s?/- Dấu hoa thị cho biết "khớp với số không hoặc nhiều lần", những gì cần là dấu hỏi để khớp "một hoặc nhiều lần". – pimbrouwers

+0

Không, regex là tốt. Tôi muốn loại bỏ tất cả khoảng trắng theo câu hỏi không chỉ là cuộc trò chuyện đầu tiên để lại các giá trị khoảng trống hơn nữa. – Treffynnon

5

Bạn có thông số của mình theo thứ tự sai. Hãy xem này: http://php.net/manual/en/function.str-replace.php

Nó phải là str_replace(" ", "", $zname_clean);

Một cách khác để làm điều này là strtolower(trim($zname_clean));

+1

không chắc chắn về "Cách khác" của bạn - trim sẽ không xóa khoảng trắng khỏi giữa chuỗi – ManseUK

+0

Mã của bạn sẽ không xóa tất cả khoảng trắng. Điều gì về lợi nhuận dòng, vv – Treffynnon

+0

Không gian trắng (không gian không có ý nghĩa) hoặc tất cả các không gian? – OptimusCrime

5

Hãy thử điều này.

$zonename=mysql_real_escape_string($_POST["zonename"]); 
$zname_clean = strtolower(str_replace(" ", "",$zonename)); 
Các vấn đề liên quan