2010-03-26 41 views
13

Tôi có một câu như thế này.Cắt   bằng PHP

1 $nbsp;     2     3   4 

Như bạn thấy, ở giữa 1 2 và 3 văn bản, có thêm không gian. Tôi muốn đầu ra chỉ có một khoảng trống giữa chúng. vì vậy đầu ra của tôi sẽ là 1 2 3 4

Nếu tôi sử dụng cắt, nó chỉ có thể xóa khoảng trắng, nhưng không phải là   Làm cách nào tôi có thể sử dụng PHP trim để có được kết quả như thế này?

Trả lời

18
$str = "1 $nbsp;     2     3   4"; 
$new_str = str_replace(" ", '', $str); 
+2

PHP code được giải thích trên máy chủ, không phải là khách hàng. Trình duyệt không bao giờ nhìn thấy nó. –

1

nếu chuỗi của bạn thực sự có " ",

$str="1       2     3   4"; 
$s = str_replace("  ","",$str); 
print $s; 
1
echo str_replace (" ", "", "1       2     3   4"); 

chỉ nhớ bạn cần phải echo ra kết quả của str_replace và bạn alo không cần phải lo lắng về không gian trắng một sự trình duyệt sẽ chỉ hiển thị một khoảng trắng.

49

Các mặt hàng này tại php.net, các công trình lớn:

$myHTML = " abc"; 
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); 
trim($converted, chr(0xC2).chr(0xA0)); 

Nguồn: http://php.net/manual/en/function.trim.php#98812

+0

Bạn có nhận thấy số lần bỏ trống không? – Deele

+26

@ Tôi không luôn luôn kiểm tra mã của mình, nhưng khi tôi làm, tôi làm điều đó trong sản xuất. –

+1

Tuyệt vời Tobias, cảm ơn rất nhiều ... –

11

Một câu trả lời toàn diện hơn đối với những người muốn chỉ làm một cắt:

$str = trim($str, " \t\n\r\0\x0B\xC2\xA0"); 

Same xử lý cắt   thực thể html:

$str = trim(html_entity_decode($str), " \t\n\r\0\x0B\xC2\xA0"); 

html_entity_decode này và cắt tương tác được nêu trong tài liệu PHP ở đây: http://php.net/manual/en/function.html-entity-decode.php#refsect1-function.html-entity-decode-notes

+0

Điều này không dải   khi nó chỉ là một chuỗi 6 ký tự. –

+0

@ArtemRussakovskii: Nó không được phép cắt   vì đó là một thực thể html và không thích hợp để cắt. Nếu bạn muốn cắt bỏ thêm   bằng cách sử dụng html_entity_decode trên chuỗi đầu tiên là giải pháp thích hợp. – Chaoix

5
$str = " abc "; 

echo trim($str, "\xC2\xA0"); //abc 
+2

Nói chung, câu trả lời hữu ích hơn nhiều nếu chúng bao gồm giải thích về mã được dự định làm gì và tại sao giải quyết vấn đề đó mà không giới thiệu người khác. –

0

Một chút muộn để trả lời nhưng hy vọng có thể giúp đỡ người khác. Điều quan trọng nhất trong khi trích xuất nội dung từ html là sử dụng utf8_decode() trong php. Sau đó, tất cả các hoạt động chuỗi khác trở nên dễ dàng. Ngay cả ký tự nước ngoài cũng có thể được thay thế bằng cách sao chép trực tiếp các ký tự dán từ trình duyệt sang mã php. Hàm sau thay thế   bằng dấu cách. Sau đó, tất cả các khoảng trắng thừa được thay thế bằng một khoảng trắng đơn bằng cách sử dụng preg_replace(). Các khoảng trắng đầu và cuối sẽ bị xóa cuối cùng.

function clean($str) 
{  
    $str = utf8_decode($str); 
    $str = str_replace(" ", " ", $str); 
    $str = preg_replace('/\s+/', ' ',$str); 
    $str = trim($str); 
    return $str; 
} 

$html = "1 $nbsp;     2     3   4"; 
$output = clean($html); 
echo $output;