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

Share:
15,397
BudwiseЯ
Author by

BudwiseЯ

I'm here to advice and to be advised.

Updated on June 06, 2022

Comments

  • BudwiseЯ
    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 with str_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
    galva about 8 years
    trim also includes space in the default mask — " \t\n\r\0\x0B\xc2\xa0".
  • Marco Demaio
    Marco Demaio about 5 years
    To 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
    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
    0x6368 over 4 years
    This 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
    at54321 over 2 years
    Beware that if $column was null, it will become an empty string.