2009-11-09 137 views
99

Tôi nhận được một chuỗi từ truy vấn cơ sở dữ liệu, sau đó tôi xóa tất cả các thẻ HTML, trả về dòng và dòng mới trước khi tôi đặt nó vào tệp CSV. Chỉ có điều là, tôi không thể tìm cách xóa số dư thừa không gian màu trắng từ giữa các số các chuỗi.Xóa khoảng trống dư thừa từ bên trong một chuỗi

Cách tốt nhất để xóa ký tự khoảng trắng bên trong là gì?

+4

Xin vui lòng, gửi một mẫu chuỗi gốc và chuỗi mong muốn. – Zote

+0

Bạn cũng có thể làm rõ đầu ra cuối cùng cần phải như thế nào? Bạn có chèn dấu phẩy vào dữ liệu cho CSV, lấy dấu phẩy từ cơ sở dữ liệu bằng dấu phẩy đã có trong đó, cho chuỗi vào một hàm xử lý chèn CSV, v.v. –

+0

ok cuối cùng đặt ra cần phải là một chuỗi với mỗi từ tách ra bởi một khoảng trắng duy nhất, tại thời điểm nó là một khoảng trắng nhiều. – joepour

Trả lời

228

Không chắc chính xác những gì bạn muốn nhưng đây là hai tình huống:

  1. Nếu bạn chỉ là đối phó với dư thừa khoảng trắng trên đầu hoặc cuối của chuỗi bạn có thể sử dụng trim(), ltrim() hoặc rtrim() để xóa nó.

  2. Nếu bạn đang đối phó với các không gian phụ trong một chuỗi xem xét một preg_replace nhiều khoảng trắng" "* với một đơn khoảng trắng" ".

Ví dụ:

$foo = preg_replace('/\s+/', ' ', $foo); 
+52

$ foo = preg_replace ('/ \ s + /', '', $ foo); – genio

+6

mã này cũng sẽ xóa tất cả các dòng mới –

+0

bằng cách sử dụng '$ foo = preg_replace ('/ \ s + /', '', $ foo);' sẽ giết hiệu ứng của 'nl2br()' –

36
$str = str_replace(' ','',$str); 

Hoặc thay thế bằng dấu gạch dưới, & nbsp; vv vv

+4

Việc này sẽ xóa tất cả khoảng trắng. Anh ta chỉ muốn bình thường hóa chuỗi. – Svend

+10

Những gì tôi đang tìm kiếm (mặc dù nó không phải là câu hỏi) – Sevenearths

+0

Tôi cũng đang tìm kiếm giải pháp cụ thể này :) – swl1020

3

$str=preg_replace('/[\s]+/',' ',$str);

+1

Bạn không bực mình khi đọc các câu trả lời khác, đúng không? – TechNyquist

17

$str = trim(preg_replace('/\s+/',' ', $str));

Dòng trên mã sẽ loại bỏ thêm không gian, cũng như không gian ở đầu và đuôi.

0

Để mở rộng câu trả lời của Sandip, tôi có một chuỗi các chuỗi hiển thị trong nhật ký được mã hóa sai theo bit.ly. Họ có nghĩa là để mã chỉ URL nhưng đặt một xử lý twitter và một số công cụ khác sau một không gian. Nó trông như thế này

? productID =26%20via%[email protected] 

Thông thường, đó would't là một vấn đề, nhưng tôi nhận được rất nhiều nỗ lực SQL injection, vì vậy tôi chuyển hướng bất cứ điều gì đó không phải là một ID hợp lệ để một 404. Tôi đã từng phương thức preg_replace để tạo chuỗi productID không hợp lệ thành productID hợp lệ.

$productID=preg_replace('/[\s]+.*/','',$productID); 

Tôi tìm một khoảng trống trong URL và sau đó xóa mọi thứ sau đó.

12

không ai trong số những ví dụ khác làm việc cho tôi, vì vậy tôi đã sử dụng cái này:

trim(preg_replace('/[\s\t\n\r\s]+/', ' ', $text_to_clean_up)) 

này thay thế tất cả các tab, dòng mới, không gian đôi vv đến 1 không gian đơn giản.

6

Nếu bạn muốn thay thế chỉ nhiều khoảng trống trong một chuỗi, ví dụ: "this string have lots of space . " Và bạn mong đợi câu trả lời cho được "this string have lots of space", bạn có thể sử dụng các giải pháp sau đây:

$strng = "this string      have lots of      space . "; 

$strng = trim(preg_replace('/\s+/',' ', $strng)); 

echo $strng; 
Các vấn đề liên quan