How to remove all occurrences of c2a0 in a string with PHP?
15,397
Solution 1
$column = str_replace("\xc2\xa0", '', $column);
Solution 2
You may use trim
trim($data['value'], " \t\n\r\0\x0B\xc2\xa0")
Where \t\n\r\0\x0B
is defualt mask, \xc2\xa0
need add
Comments
-
BudwiseЯ almost 2 years
I'm working with a CSV file which is exported from Excel.
I have a column that contains a value of 1 234,00. I need to get all whitespaces away from these kinds of columns with PHP and I've tried to do it with
preg_replace("/\s*/","",$column)
as well as withstr_replace(" ","",$column)
. I was almost ready to lose it so I took a glance into the csv-file with a HEX-editor and noticed, that this space consist of two hex values, C2 and A0 which seems to be UTF-8 non-breaking space.But I suck with encoding stuff and I'm still confused in finding a way to remove them. Any ideas?
-
galva about 8 yearstrim also includes space in the default mask —
" \t\n\r\0\x0B\xc2\xa0"
. -
Marco Demaio about 5 yearsTo whom it may be interested this works because the input is UTF-8, if the input is ISO-8895-1 or CP1252 you must use
str_replace("\xA0", '', $column);
Thanks to stackoverflow.com/a/33019796/260080 -
phihag about 5 years@MarcoDemaio Or better first, convert to UTF-8 first. Any application that works with ISO-8859-1 internally is buggy – for instance, it will not correctly handle emojis.
-
0x6368 over 4 yearsThis might remove parts of an otherwise correct multibyte character.
var_dump("\xc2\xb4AAAA"); var_dump(trim("\xc2\xb4AAAA", " \t\n\r\0\x0B\xc2\xa0"));
-
at54321 over 2 yearsBeware that if
$column
wasnull
, it will become an empty string.