| |
|
|
| | Я заношу данные в БД MYSQL посредством php скрипта (циклом разбираю данные из csv-файла).
...
$ktel=$elements[18];
$konttel=$elements[19];
if(($elements[18]=='') && ($elements[19]=='') ){ continue; }
$info=$elements[20];
...
|
$ktel - это первый контактные телефон (varchar)
$konttel - это второй контактный телефон (varchar)
$info - это дополнительные данные (varchar)
if(($elements[18]=='') && ($elements[19]=='') ){ continue; }
- это если нет никаких контактных данных - строку не заносить.
Мне нужно прописать условия, но я не знаю синтаксиса. Подскажите, пожалуйста.
1. Если $elements[20] содержит 8067, 8097, 8050, 8095 и
$elements[19] не содержит ничего (пустое поле), то добавить эти значение в $ktel
Я это реализую так:
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18]; }
|
Только мне нужно, чтобы эти значения из $elements[20] удалялись. Как дописать?
2. Также из элемента 20 мне нужно перенести последовательность из семи цифр. Как это можно прописать? Т.е.
$elements[20]==...последовательность в любом порядке семи цифр...
Спасибо. | |
| |
|
|
| |
|
|
| |
для: Gandzas
(20.09.2006 в 19:47)
| | | // Только мне нужно, чтобы эти значения из $elements[20] удалялись. Как дописать?
Удалить переменную (или элемент массива) можно используя ф-ю unset ... то есть, если правильно понял, примерно так
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18]; unset ($elements[20]); }
|
// перенести последовательность из семи цифр.
куда перенести ? :) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(20.09.2006 в 20:00)
| | | да это неважно :)) В этой части мне все понятно.
В данном случае я их буду переносить в $konttel.
Я не знаю как прописать "содержит последовательность из семи цифр (в том числе, но не исключительно, там, кроме этих цифр могут быть и другие данные)" | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(20.09.2006 в 20:00)
| | | >Удалить переменную (или элемент массива) можно используя ф-ю unset ... то есть, если правильно понял, примерно так
>
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18]; unset ($elements[20]); }
|
удаляется вся строка, а мне нужно только 8066. Это возможно? | |
| |
|
|
| |
|
|
| |
для: Gandzas
(20.09.2006 в 22:05)
| | | // удаляется вся строка, а мне нужно только 8066. Это возможно?
если "8066" в строке встречается только один раз, то можно использовать ф-ю str_replace
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18];
$elements[20] = str_replace("8066", "", $elements[20]); }
|
Если несколько раз может встретится, то лучше использовать регулярное выражение (хотя работает оно немного медленнее предыдущего варианта)
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18];
$elements[20] = preg_replace("/8066/", "", $elements[20], 1); }
|
// содержит последовательность из семи цифр
можно использовать рег. выражение вида
\d{7}
<?
$str = '8080808';
if(preg_match("|^[\d]{7}$|", $str))
echo "Соответствует";
else echo "Не соответствует";
?>
|
Но это рег. выражение будет работать только для строки из семи цифр... а если могут быть в строке и другие символы, приведите пожалуйста пример, чтобы правильно составить рег. выр-е.
Важно то, где могут быть эти данные ... и как они отделены от семи цифр. | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(21.09.2006 в 16:50)
| | | Спасибо огромное за помощь! Я уже реализовала это следующим образом:
Удаление
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18]; $elements[20]=eregi_replace("8066","",$elements[20]);}
|
7 цифр:
$match=array();
if(eregi("([0-9]{7,7})",$elements[20],$match) && ($elements[19]=="") )
{
$konttel=$match[1];
$info=eregi_replace($match[1],"",$elements[20]);
unset($match);
}
|
| |
| |
|
|