Kendi alan kodu gelen çağrıyı eşleşen sürece benim yeni telefon bir telefon numarasını tanımıyor. Ben bir alan kodu-devlet aramalar için gerekli değildir Idaho yaşamak beri, benim temasların çok bir alan kodu olmadan kaydedildi. Benim telefonda saklanan kişileri binlerce yana, elle güncellemek için pratik olmazdı. Ben sorunu işlemek için aşağıdaki PHP komut dosyası yazmaya karar verdim. Ben rastgele temasların başında yinelenen alan kodları bulma kulüpler dışında, iyi iş gibi görünüyor.
<?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;
?>
CSV değiştirerek daha iyi bir yaklaşım var mı? Ayrıca, CSV üzerinde geçiş sayısını en aza indirmek için bir yol var? Yukarıdaki komut olarak, preg_replace çok büyük bir String üzerinde binlerce kez denir.