|
|
|
| в переменных:
$tel1, $tel2, $tel3, $tel4 присутствуют лишние символы: "[пробел]", "-", "(", ")", причем "(" нужно заменить на "8"
Я использую:
$tel1=str_replace(" ","",$tel1);
$tel2=str_replace(" ","",$tel2);
$tel3=str_replace(" ","",$tel3);
$tel4=str_replace(" ","",$tel4);
$tel1=str_replace("-","",$tel1);
$tel2=str_replace("-","",$tel2);
$tel3=str_replace("-","",$tel3);
$tel4=str_replace("-","",$tel4);
$tel1=str_replace(")","",$tel1);
$tel2=str_replace(")","",$tel2);
$tel3=str_replace(")","",$tel3);
$tel4=str_replace(")","",$tel4);
$tel1=str_replace("(","8",$tel1);
$tel2=str_replace("(","8",$tel2);
$tel3=str_replace("(","8",$tel3);
$tel4=str_replace("(","8",$tel4);
|
Можно ли как-то упростить?
Далее, все эти переменные могут содержать от 0 до 44 символов (только цифры).
Мне нужно, чтобы осталось только 11, но так, чтобы остальные символы не потерялись, а были записаны в следующую пустую переменную, т.е.
if((eregi("([0-9]{44})",$tel1,$match)) && ($tel2==0) && ($tel3==0) && ($tel4==0))
{
$tel1=substr($tel1, 0, 10);
$tel2=substr($tel1, 11, 21);
$tel3=substr($tel1, 22, 31);
$tel4=substr($tel1, 32, 43);
}
if((eregi("([0-9]{33})",$tel1,$match)) && ($tel2==0) && ($tel3==0))
{
$tel1=substr($tel1, 0, 10);
$tel2=substr($tel1, 11, 21);
$tel3=substr($tel1, 22, 31);
}
if((eregi("([0-9]{22})",$tel1,$match)) && ($tel2==0))
{
$tel1=substr($tel1, 0, 10);
$tel2=substr($tel1, 11, 21);
}
|
Но встречаются варианты, в которых не выполняется условие, т.е.
if((eregi("([0-9]{22})",$tel1,$match)) && ($tel2==0))
{
$tel1=substr($tel1, 0, 10);
$tel2=substr($tel1, 11, 21);
}
|
если переменная $tel2!=0; то условие не выполняется и нужно прописывать еще несколько условий:
if((eregi("([0-9]{22})",$tel1,$match)) && ($tel2!=0) && ($tel3==0))
{
$tel1=substr($tel1, 0, 10);
$tel3=substr($tel1, 11, 21);
}
|
и т.д.
Может, можно как-то упростить?
P.S. C наступающим Рождеством! :) | |
|
|
|
|
|
|
|
для: Gandzas
(06.01.2008 в 21:45)
| | Это вырезка и замена:
preg_replace("/[ (-]+/", "", $text);
preg_replace("/)/", "8", $text);
|
но можно и реплейсом. Быстрее будет, скорее всего. Вместо этих конструкций:
$tel1=str_replace(" ","",$tel1);
$tel2=str_replace(" ","",$tel2);
$tel3=str_replace(" ","",$tel3);
$tel4=str_replace(" ","",$tel4);
|
Лучше написать функцию, которая бы принимала что заменять, чем и массив значений. Ну или хотя-бы цикл зафигачить... | |
|
|
|
|