2013-05-15 25 views
7

Xin chào, tôi nhận được một chuỗi PHP mà tôi cần phải loại bỏ các khoảng trống ra khỏi. Tôi đã sử dụng các mã sau đây nhưng khi tôi echo $classname nó chỉ hiển thị chuỗi vẫn còn với các không gian trong đó.Không thể lấy str_replace() để loại bỏ các dấu cách trong một chuỗi PHP

<?php 
    $fieldname = the_sub_field('venue_title'); 
    $classname = str_replace(' ', '', $fieldname); 
    echo $classname; 
    ?> 
+0

Sử dụng một trình soạn thảo hex để xem các byte, nếu không gian không phải là '20' trong HEX thì nó không phải là một không gian" bình thường ". Bạn có thể sử dụng một hàm đơn giản trong PHP để chuyển đổi thành HEX. – HamZa

+0

có thể trùng lặp của [Để dải trắng trong một biến trong PHP] (http://stackoverflow.com/questions/1279774/to-strip-whitespaces-inside-a-variable-in-php) –

Trả lời

3

sử dụng cắt như

TRIM($fieldname); 

EDIT này:

preg_replace('/\s+/', '', $fieldname); 
+2

'trim()' sẽ chỉ loại bỏ khoảng trắng từ đầu và cuối của chuỗi – billyonecan

+0

'trim()' chỉ cắt tỉa ở đầu hoặc cuối chuỗi. Trong ví dụ của Paul, các ký tự khoảng trắng có thể nằm trong chuỗi. – ty812

4

Vấn đề có thể là nhân vật không phải là một không gian, nhưng một nhân vật khác khoảng trắng.

Hãy thử

$classname = preg_replace('/\s/', '', $fieldname); 
2

Có thể là không gian không phải là thực sự là một không gian, nhưng hình thức khác của whitesspace.

Bạn có thể muốn thử:

$classname = preg_replace('/\s+/', '', $fieldname); 

Từ here.

+0

thử thay thế '\ h +' cho khoảng trống ngang, điều này sẽ giữ lại ngắt dòng, nếu cần. – Martin

17

Nếu bạn biết không gian trắng là chỉ do không gian, bạn có thể sử dụng:

$classname = str_replace(' ','',$fieldname); 

Nhưng nếu nó có thể là do không gian, bạn có thể sử dụng:

$classname = preg_replace('/\s+/','',$fieldname) 
+1

Hãy thử thay thế '\ s +' cho '\ h +' cho khoảng trắng nằm ngang, điều này sẽ giữ lại ngắt dòng, nếu cần. – Martin

0
<?php 
    $fieldname = "I am 21 Years Old"; 
    $classname = str_replace(' ', '', $fieldname); 
    echo $classname; 
?> 

Điều này chạy hoàn hảo. Kiểm tra giá trị trả về theo hàm này: the_sub_field('venue_title');

+0

Tôi nghĩ rằng vấn đề là chuỗi không được xử lý như một chuỗi. nó cần một "ở hai bên. Làm thế nào bạn sẽ làm điều này trong php? Ví dụ: $ fieldname =" '". the_sub_field (' venue_title ')."' "; –

+0

sử dụng" ".the_sub_field ('venue_title'). "" hoặc có lẽ "" + the_sub_field ('venue_title') + "" – Blu

2

Vấn đề là trường mà nó đang kéo, không phải phần còn lại của php. 'the_sub_field (' venue_title ')' kéo một trường từ plugin wordpress 'Trường tùy chỉnh nâng cao' nhưng chức năng này được thiết kế để hiển thị dữ liệu thay vì chỉ truy xuất dữ liệu đó. Thay vào đó tôi đã sử dụng 'get_sub_field (' venue_title ')' và nó hoạt động. cổ vũ cho sự giúp đỡ

+0

Đây là câu trả lời đúng cho mối đe dọa này và cần được đánh dấu để – JackSD

18

Cố gắng thêm u -parameter cho regex-mô hình, vì một chuỗi có thể có mã UTF-8:

$classname = preg_replace('/\s+/u', '', $fieldname); 
+3

WOW. HUGE THANKSS! Giúp đỡ! –

+0

Đây là điều duy nhất làm việc cho tôi – Banning

+0

Tương tự ở đây. Chuỗi được lấy từ trường meta Wordpress. Đã được lưu trong bảng điều khiển quản trị, sau khi "sao chép-dán" từ trang web cũ, với mã hóa khác nhau ... –

Các vấn đề liên quan