|
|
|
| Доброе утро Помогите в такой проблеме:
есть строка вида $dop="ONT-да/ zteg_f660/ Москва, ул. Ленина, д. 22 кв. 22 709501";
функция function find_phone($dop)
{
$find_t='';
if (ereg("ПС[0-9]{4,5}",$dop,$ph)){
$find_t=$ph[0];}
elseif (ereg("пс[0-9]{4,5}",$dop,$ph)){
$find_t=$ph[0];}
elseif (ereg("[0-9]{5,6}",$dop,$ph)){
$find_t=$ph[0];}
if ($find_t=='') $find_t='no';
return($find_t);
} отрабатывает отлично
как только я меняю строку на
$dop=""ONT-да/ zteg_f660-ZTEGx70012F57/ Могилев, ул. Профсоюзная, д. 22 кв. 22 799501;
есств-но функция берет первые 5 или 6 цифр подряд и это получается 70012 а мне надо чтоб всегда функция брала 5 или 6 цифр после адреса, т.е. тел Надо как -то разбивать строку на части - помоги как лучше её разбить чтоб функция отрабатывала верно | |
|
|
|
|
|
|
|
для: sivira
(01.09.2011 в 11:49)
| | А телефон всегда в конце? Если да, то может стоит привязаться к концу строки при помощи символа $
<?php
$dop = "ONT-да/ zteg_f660-ZTEGx70012F57/ Могилев, ул. Профсоюзная, д. 22 кв. 22 799501";
echo find_phone($dop);
function find_phone($dop)
{
$find_t='';
if (ereg("ПС[0-9]{4,5}$",$dop,$ph)){
$find_t=$ph[0];}
elseif (ereg("пс[0-9]{4,5}$",$dop,$ph)){
$find_t=$ph[0];}
elseif (ereg("[0-9]{5,6}$",$dop,$ph)){
$find_t=$ph[0];}
if ($find_t=='') $find_t='no';
return($find_t);
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.09.2011 в 11:58)
| | в том тои дело что не всегда но после назв города точно | |
|
|
|
|
|
|
|
для: sivira
(01.09.2011 в 12:00)
| | Тогда привяжитесь к границе слова
<?php
$dop = "ONT-да/ zteg_f660-ZTEGx70012F57/ Могилев, ул. Профсоюзная, д. 22 кв. 22 799501";
echo find_phone($dop);
function find_phone($dop)
{
$find_t='';
if (ereg("[[:<:]]ПС[0-9]{4,5}[[:>:]]",$dop,$ph)){
$find_t=$ph[0];}
elseif (ereg("[[:<:]]пс[0-9]{4,5}[[:>:]]",$dop,$ph)){
$find_t=$ph[0];}
elseif (ereg("[[:<:]][0-9]{5,6}[[:>:]]",$dop,$ph)){
$find_t=$ph[0];}
if ($find_t=='') $find_t='no';
return($find_t);
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.09.2011 в 12:05)
| | а можно поподробнее про границу слова [[:<:]] ? | |
|
|
|
|
|
|
|
для: sivira
(01.09.2011 в 14:00)
| | Фактически вы границами требуете, чтобы последовательность окружали либо пробельные символы, либо конец строки. В общем все что угодно, только не другие символы, образующие слова и числа. | |
|
|
|
|
|
|
|
для: cheops
(01.09.2011 в 12:05)
| | мне тоже интересно про границу, я слышал только про \b, [:<:] аналог? | |
|
|
|
|
|
|
|
для: f111
(01.09.2011 в 14:20)
| | Да, аналог, так как задействован ereg(), а не preg_match(), тут используются POSIX-регулярные выражения, а не Perl. У них немного синтаксис отличается. | |
|
|
|
|
|
|
|
для: sivira
(01.09.2011 в 11:49)
| | . | |
|
|
|