Search Results

Search found 3 results on 1 pages for 'hurpe'.

Page 1/1 | 1 

  • Using regex to fix phone numbers in a CSV with PHP

    - by Hurpe
    My new phone does not recognize a phone number unless it's area code matches the incoming call. Since I live in Idaho where an area code is not needed for in-state calls, many of my contacts were saved without an area code. Since I have thousands of contacts stored in my phone, it would not be practical to manually update them. I decided to write the following PHP script to handle the problem. It seems to work well, except that I'm finding duplicate area codes at the beginning of random contacts. <?php //the script can take a while to complete set_time_limit(200); function validate_area_code($number) { //digits are taken one by one out of $number, and insert in to $numString $numString = ""; for ($i = 0; $i < strlen($number); $i++) { $curr = substr($number,$i,1); //only copy from $number to $numString when the character is numeric if (is_numeric($curr)) { $numString = $numString . $curr; } } //add area code "208" to the beginning of any phone number of length 7 if (strlen($numString) == 7) { return "208" . $numString; //remove country code (none of the contacts are outside the U.S.) } else if (strlen($numString) == 11) { return preg_replace("/^1/","",$numString); } else { return $numString; } } //matches any phone number in the csv $pattern = "/((1? ?\(?[2-9]\d\d\)? *)? ?\d\d\d-?\d\d\d\d)/"; $csv = file_get_contents("contacts2.CSV"); preg_match_all($pattern,$csv,$matches); foreach ($matches[0] as $key1 => $value) { /*create a pattern that matches the specific phone number by adding slashes before possible special characters*/ $pattern = preg_replace("/\(|\)|\-/","\\\\$0",$value); //create the replacement phone number $replacement = validate_area_code($value); //add delimeters $pattern = "/" . $pattern . "/"; $csv = preg_replace($pattern,$replacement,$csv); } echo $csv; ?> Is there a better approach to modifying the csv? Also, is there a way to minimize the number of passes over the csv? In the script above, preg_replace is called thousands of times on a very large String.

    Read the article

  • Multiple calls to preg_replace alters result

    - by Hurpe
    I have a bunch of files that were named in a somewhat standard format. The standard form is basically this: [integer]_word1_word2_word3_ ... _wordn where a word could really be anything, but all words are separated by an underscore. There is really only 3 things I want to do to the text: 1.) I want to modify the integer, which is always at the beginning, so that something like "200" would become $ 200.00. 2.) replace any "words" of the form "with", "With", "w/", or "W/" with "with". 3.) Replace all underscores with a space. I wrote three different preg_replace calls to do the trick. They are as follows: 1.) $filename = preg_replace("/(^[0-9]+)/","$ $1.00",$filename) 2.) $filename = preg_replace("/_([wW]|[wW]ith)_/"," with ",$filename) 3.) $filename = preg_replace("/_/"," ",$filename); Each replacement works as expected when run individually, but when all three are run, the 2nd replacement is ignored. Why would something like that occur? Thanks for the help!

    Read the article

  • MySQL comparisons between multiple rows

    - by Hurpe
    I have a MySQL table with the following columns: id(int), date (timestamp), starttime(varchar), endtime(varchar), ... I need to find time slots that are occupied by two or more rows. Here is an example table id| date |starttime|endtime | __|_____________________|_________|________| 1 | 2010-02-16 17:37:36 |14:35:00 |17:37:00| 2 | 2010-02-17 12:24:22 |12:13:00 |14:32:00| 3 | 2010-02-16 12:24:22 |15:00:00 |18:00:00| Rows 1 and 3 collide, and need to be corrected by the user. I need a query to identify such colliding rows - something that would give me the ID of all rows in the collision. When inserting data in the database I find collisions with this query: SELECT ID FROM LEDGER WHERE DATE(DATE) = DATE('$timestamp') AND ( STR_TO_DATE('$starttime','%H:%i:%s') BETWEEN STR_TO_DATE(STARTTIME,'%H:%i:%s') AND STR_TO_DATE(ENDTIME,'%H:%i:%s') OR STR_TO_DATE('$endtime','%H:%i:%s') BETWEEN STR_TO_DATE(STARTTIME,'%H:%i:%s') AND STR_TO_DATE(ENDTIME,'%H:%i:%s') ) AND FNAME = '$fname'"; Is there any way to accomplish this strictly using MySQL or do I have to use PHP to find the collisions?

    Read the article

1