Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вопрос по синтаксису.

Сообщения:  [1-6] 

 
 автор: Gandzas   (23.09.2006 в 04:46)   письмо автору
 
   для: 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);

   
 
 автор: kasmanaft   (21.09.2006 в 16:50)   письмо автору
 
   для: 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 
"Не соответствует";
?>

Но это рег. выражение будет работать только для строки из семи цифр... а если могут быть в строке и другие символы, приведите пожалуйста пример, чтобы правильно составить рег. выр-е.
Важно то, где могут быть эти данные ... и как они отделены от семи цифр.

   
 
 автор: Gandzas   (20.09.2006 в 22:05)   письмо автору
 
   для: 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 в 21:33)   письмо автору
 
   для: kasmanaft   (20.09.2006 в 20:00)
 

да это неважно :)) В этой части мне все понятно.
В данном случае я их буду переносить в $konttel.
Я не знаю как прописать "содержит последовательность из семи цифр (в том числе, но не исключительно, там, кроме этих цифр могут быть и другие данные)"

   
 
 автор: kasmanaft   (20.09.2006 в 20:00)   письмо автору
 
   для: Gandzas   (20.09.2006 в 19:47)
 

// Только мне нужно, чтобы эти значения из $elements[20] удалялись. Как дописать?
Удалить переменную (или элемент массива) можно используя ф-ю unset ... то есть, если правильно понял, примерно так
if(($elements[20]==8066) && ($elements[19]=="") ){ $ktel="8066".$elements[18]; unset ($elements[20]); }

// перенести последовательность из семи цифр.
куда перенести ? :)

   
 
 автор: Gandzas   (20.09.2006 в 19:47)   письмо автору
 
 

Я заношу данные в БД 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]==...последовательность в любом порядке семи цифр...
Спасибо.

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования