Re: regex
| From: | Jim Lucas | Date: | Mon, 21 Jan 2008 16:36:21 +0000 |
| Subject: | Re: regex | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-267765@lists.php.net to get a copy of this message | ||
Peter wrote:
I am trying to convert ms access sql to postgresql using php. I have a sql statement in the form ;- $sql = SELECT DISTINCT [Table Name].[Column.Name], [Table Name 1].[Column Name 2] etc. what I want to end up with is $sql = SELECT DISTINCT table_name.column_name, table_name_1.column_name_2, ........ I have managed to get the caps to lower but I cant work out how to put the _ in place of spaces if the spaces are between [ ]. I either end up with S_E_L_E_C ..... or SELECT_DISTINCT_ etc... . Naturally I have only used part of sql statement and table, column names have been changed. (Think the one I'm trying on is 2000+ characters. So its not a case of set number of words/numbers between [] it could be 2 or it could be 4 etc) Anyone workout what I am talking about and can help would be appreciated. PeterSomething along the lines of this? <?php error_reporting(E_ALL); ini_set('display_errors', 1); $sql = "SELECT DISTINCT [Table Name].[Column Name], ". "[Table Name 1].[Column Name 2]"; echo "{$sql}<br />\n"; preg_match_all('%\[([^\]]+)\]%', $sql, $matches, PREG_SET_ORDER); $change = array(); foreach ( $matches AS $match ) { $change[$match[0]] = str_replace(' ', '_', $match[1]); } echo '<pre>'.print_r($change,1).'</pre>'; echo str_replace(array_keys($change), $change, $sql); -- Jim Lucas "Some men are born to greatness, some achieve greatness, and some have greatness thrust upon them." Twelfth Night, Act II, Scene V by William Shakespeare