2013-05-15 14 views
7

Witam, otrzymuję ciąg PHP, który muszę usunąć spacje. Użyłem następujący kod, ale kiedy echo $classname po prostu wyświetla ciąg znaków z spacji w nim.Nie można uzyskać str_replace(), aby usunąć spacje w ciągu PHP

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

użyć edytora hex aby zobaczyć bajty, jeśli przestrzenie nie są "20" w HEX, to nie jest "normalna" przestrzeń. Możesz użyć prostej funkcji w PHP, aby przekonwertować na HEX. – HamZa

+0

możliwy duplikat [To strip whitespaces wewnątrz zmiennej w PHP] (http://stackoverflow.com/questions/1279774/to-strip-whitespaces-inside-a-variable-inphph) –

Odpowiedz

3

stosowanie wykończenia jak ten

TRIM($fieldname); 

EDIT:

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

'trim()' will usuwaj tylko białe znaki od początku i końca ciągu – billyonecan

+0

"trim()" tylko przycina na początku lub końcu łańcucha. W przykładzie Pawła białe spacje mogą znajdować się w ciągu znaków. – ty812

4

Problem może mieć postać nie jest miejsce, ale inny biały znak.

Spróbuj

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

To może być to, że przestrzeń nie jest to miejsce, ale inna forma whitesspace.

Możecie też spróbować:

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

Od here.

+0

spróbuj podstawić '\ h +' dla poziomych białych znaków, to zachowa podział linii, jeśli to konieczne. – Martin

17

Jeśli wiesz, biała przestrzeń jest tylko ze względu na przestrzeni, można użyć:

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

Ale jeśli mogłoby to być spowodowane przestrzeni, można użyć:

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

Spróbuj zamienić '\ s +' na '\ h +' na poziome białe znaki, w razie potrzeby zachowa podział na wiersze. – Martin

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

To działa idealnie. Sprawdź zwracaną wartość za pomocą tej funkcji: the_sub_field('venue_title');

+0

Myślę, że problem polega na tym, że ciąg nie jest traktowany jako ciąg. potrzebuje "po każdej ze stron." w jaki sposób zrobiłbyś to w php? np. $ fieldname = "''. the_sub_field ('venue_title')." '"; –

+0

użyć" ".the_sub_field ('venue_title'). "" lub może "" + the_sub_field ('venue_title') + "" – Blu

2

Problemem było pole, które ciągnął, a nie reszta php. 'the_sub_field (' venue_title ')' pobiera pole z wtyczki wordpress 'Advanced Custom Fields', ale ta funkcja służy do wyświetlania danych, a nie tylko ich pobierania. Zamiast tego użyłem "get_sub_field (" venue_title ') "i zadziałało. wiwaty za pomoc

+0

To jest poprawna odpowiedź na to zagrożenie i musi być oznaczona tak – JackSD

18

Spróbuj dodać u -parameter dla regex-wzorca, ponieważ ciąg może mieć kodowanie UTF-8:

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

WOW. OGROMNE PODZIĘKOWANIA! POMÓGŁ! –

+0

To jest jedyna rzecz, która zadziałała dla mnie – Banning

+0

To samo tutaj. Łańcuch został wyprowadzony z pola meta Wordpress. Został zapisany w panelu administratora po "kopiuj-wklej" ze starej strony, z innym kodowaniem ... –

Powiązane problemy