Dây làm sạch
Thông thường, các chuỗi chúng ta nhận được từ các tệp hoặc người dùng cần được làm sạch trước khi chúng ta có thể sử dụng chúng. Hai vấn đề phổ biến với dữ liệu thô là sự hiện diện của khoảng trắng bên ngoài và viết hoa không chính xác [chữ hoa so với chữ thường].
Loại bỏ khoảng trắng
Bạn có thể loại bỏ khoảng trắng dẫn đầu hoặc dấu vết bằng các chức năng
" "4,
" "5 và
" "6:
$trimmed = trim[string [, charlist ]
]; $trimmed = ltrim[string [, charlist ]
]; $trimmed = rtrim[string [, charlist ]
];
" "4 Trả về một bản sao
" "8 với khoảng trắng bị loại bỏ từ đầu và cuối.
" "5 [L ở bên trái] làm như vậy, nhưng chỉ loại bỏ khoảng trắng từ đầu chuỗi.
" "6 [R là bên phải] chỉ loại bỏ khoảng trắng từ cuối chuỗi. Đối số
"\t"1 tùy chọn là một chuỗi chỉ định tất cả các ký tự để dải. Các ký tự mặc định để dải được đưa ra trong Bảng 4-3.l is for left] does the same, but removes whitespace only from the start of the string.
" "6 [the r is for right] removes whitespace only from the end of the string. The optional
"\t"1 argument is a string that specifies all the characters to strip. The default characters to strip are given in Table 4-3.
Bảng & nbsp; 4-3. & Nbsp; ký tự mặc định bị xóa bởi trim [], ltrim [] và rtrim []
" " | 0x20 | Không gian |
"\t" | 0x09 | Chuyển hướng |
"\n" | 0x0A | Newline [Line Feed] |
"\r" | 0x0D | Vận chuyển trở lại |
"\0" | 0x00 | NUL-byte |
"\x0B" | 0x0B | Tab dọc |
Ví dụ:
$title = " Programming PHP \n"; $str_1 = ltrim[$title]; // $str_1 is "Programming PHP \n" $str_2 = rtrim[$title]; // $str_2 is " Programming PHP" $str_3 = trim[$title]; // $str_3 is "Programming PHP"
Đưa ra một dòng dữ liệu được phân tách theo tab, hãy sử dụng đối số
"\t"2 để xóa khoảng trắng dẫn đầu hoặc dấu vết mà không cần xóa các tab:
$record = " Fred\tFlintstone\t35\tWilma \n"; $record = trim[$record, " \r\n\0\x0B"; // $record is "Fred\tFlintstone\t35\tWilma"
Thay đổi trường hợp
PHP có một số chức năng để thay đổi trường hợp của chuỗi:
"\t"3 và
"\t"4 hoạt động trên toàn bộ chuỗi,
"\t"5 chỉ hoạt động trên ký tự đầu tiên của chuỗi và
"\t"6 hoạt động trên ký tự đầu tiên của mỗi từ trong chuỗi. Mỗi hàm có một chuỗi để hoạt động như một đối số và trả về một bản sao của chuỗi đó, thay đổi một cách thích hợp. Ví dụ:
$string1 = "FRED flintstone"; $string2 = "barney rubble"; print[strtolower[$string1]]; print[strtoupper[$string1]]; print[ucfirst[$string2]]; print[ucwords[$string2]]; fred flintstone FRED FLINTSTONE Barney rubble Barney Rubble
Nếu bạn đã có một chuỗi trường hợp hỗn hợp mà bạn muốn chuyển đổi sang trường hợp tiêu đề, thì chữ cái đầu tiên của mỗi từ ở chữ hoa và phần còn lại của các chữ cái ở chữ thường, hãy sử dụng kết hợp
"\t"3 và
"\t"6:
" "0
Cập nhật
Giải pháp dưới đây có phiên bản "SEO thân thiện hơn":
" "1
Lý do cho các chức năng trên [mà tôi thấy không hiệu quả - một điều bên dưới là tốt hơn] là một dịch vụ không được đặt tên rõ ràng là kiểm tra chính tả và nhận dạng từ khóa trên URL.
Sau khi mất một thời gian dài đối với sự hoang tưởng của khách hàng, tôi phát hiện ra rằng họ không tưởng tượng ra mọi thứ - các chuyên gia SEO của họ [tôi chắc chắn không phải là một] báo cáo rằng, nói rằng, chuyển đổi "nền kinh tế viaggi perù" thành
"\t"9 "hành xử tốt hơn" so với
"\n"0 ["làm sạch" trước đó đã loại bỏ các ký tự UTF8; Bogotà đã trở thành Bogot, Medellìn trở thành Medelln, v.v.].Bogotà became bogot, Medellìn became medelln and so on].
Ngoài ra còn có một số lỗi chính tả phổ biến dường như ảnh hưởng đến kết quả, và lời giải thích duy nhất có ý nghĩa với tôi là URL của chúng tôi đã được giải nén, những từ ngữ được phát ra và thường lái xe biết các thuật toán xếp hạng nào. Và những thuật toán đó rõ ràng đã được cho ăn bằng các chuỗi được làm sạch UTF8, do đó "perù" trở thành "peru" thay vì "mỗi". "Per" không phù hợp và loại nó vào cổ.
Để cả giữ các ký tự UTF8 và thay thế một số lỗi chính tả, chức năng nhanh hơn bên dưới đã trở thành hàm chính xác hơn [?] Ở trên.
"\n"1 cần phải được thiết kế bằng tay, tất nhiên.
Câu trả lời trước
Một cách tiếp cận đơn giản:
" "2
Lưu ý rằng bạn có thể phải đầu tiên
"\n"2 URL, vì%20 và + cả hai đều thực sự là không gian-ý tôi là, nếu bạn có "không bao giờ%20gonna%20Give%20you%20up" Bạn muốn nó trở thành không bao giờ gonna-give-bạn -Up, không bao giờ 20gonna20give20you20up. Bạn có thể không cần nó, nhưng tôi nghĩ rằng tôi sẽ đề cập đến khả năng.
Vì vậy, chức năng đã hoàn thành cùng với các trường hợp thử nghiệm:
" "3
Để xử lý UTF-8, tôi đã sử dụng triển khai
"\n"3 được tìm thấy trực tuyến [liên kết bị hỏng kể từ đó, nhưng một bản sao bị tước bỏ với tất cả các ký tự UTF8 không quá như vậy ở đầu câu trả lời; Bạn cần] chuyển đổi các ký tự UTF8 thành các ký tự bình thường, do đó bảo tồn từ "nhìn" càng nhiều càng tốt. Nó có thể được đơn giản hóa và được bao bọc bên trong chức năng ở đây để thực hiện.
Chức năng trên cũng thực hiện chuyển đổi sang chữ thường - nhưng đó là một hương vị. Mã để làm như vậy đã được bình luận.