17 December How to remove hidden tab characters
At this moment, all the language translations of the Floorplanner 2D app are stored in a database table. Today we discovered that a couple of these translations didn’t align properly in the interface. After some investigation we discovered that they all contained a hidden tab character at the end of each string. This was probably caused by importing a malformed CSV file.
I thought a simple REPLACE query would fix this problem, but (as usual) it was a little more complicated than that. First I had to find the fields with the tab character… Willem pointed me to the right direction with his favorite weapon of choice REGEXP. According to the MySQL docs I could find tab characters with something like this:
SELECT * FROM table WHERE field REGEXP '[[.LF.]]'
The next step was to remove the tab characters. My first thought was to do this by replacing them with an empty string. It turns out you can’t combine a REPLACE with a REGEXP in a query. So I used good ol’ PHP for the job. A nice advantage was that I didn’t have to do any replacing, I could just use the trim() function.
$res = mysql_query("SELECT id, field FROM table WHERE field REGEXP '[[.LF.]]'"); if($res) { while($row = mysql_fetch_assoc($res)) { $id = $row['id']; $field = trim($row['field']); mysql_query("UPDATE table SET field = '$field' WHERE id = $id"); } }
Rather simple, when you know what to do… Another bug bites the dust!
3 Comments - Tags: database, mysql, PHP, sql, tab character


