Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: switch и регулярные выражения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
irysik
Отправлено: 12 Марта, 2012 - 09:14:08
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Подскажите можно использовать регулярные выражения в ветке case.Например вот так:
$z="1,2,4,8,gggggg rrrrrrr";
$q=strlen($z);
echo $q;
for ($i=0;$i<$q;$i++)

{$w=substr($z,$i,1);
//echo $w."<br>";
switch ($w)
{
case ",":{break;}
case "/[0-9]/":{

$res.="+<br>";
break;
}
case "/[A-Za-zÀ-ßà-ÿ\s]/":{$res.=$w;
break;
}
default: {$res.="не вверно";
break;
}
}//end switch

}//end for
echo $res;
 
 Top
snikers987
Отправлено: 12 Марта, 2012 - 09:54:16
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Синтаксически можно, для switch это будет просто строка для сравнения, но сравнения с патерном не будет происходить.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
irysik
Отправлено: 12 Марта, 2012 - 11:00:14
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




snikers987 пишет:
Синтаксически можно, для switch это будет просто строка для сравнения, но сравнения с патерном не будет происходить.


А как тогда можно из строки взять сочетание букв,причем я не знаю с какой позиции начинаются буквы???
 
 Top
Мелкий Супермодератор
Отправлено: 12 Марта, 2012 - 11:31:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




irysik, не поверите - регуляркой.
Какая задача в оригинале?


-----
PostgreSQL DBA
 
 Top
irysik
Отправлено: 13 Марта, 2012 - 06:38:46
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




У меня есть строка, в которой цифры и буквы(словосочетание),разделены запятой.Проблема в том что я не знаю сколько там букв а сколько цифр.
Может быть :1,2,3,йуцуцйуцй фыкаваку, а может 1,6,8,9,10,15,ава аав или вообще не содержать цифр.
Мне нужно после первого вхождения буквы считать остаток строки,а перед буквами если есть цифры записать их в массив.
 
 Top
Мелкий Супермодератор
Отправлено: 13 Марта, 2012 - 08:54:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sInput = '1,2,3,йуцуцйуцй фыкаваку';
  2. $rgDigits = array();
  3. $rgChunks = explode(',',$sInput);
  4. foreach($rgChunks as $iKey=>$mVal) {
  5. if (is_numeric($mVal)) {
  6. $rgDigits[] = $mVal;
  7. unset($rgChunks[$iKey]);
  8. } else break;
  9. }
  10. $sOutString = join(',', $rgChunks);
  11. var_dump($rgDigits, $sOutString);

Можно и без регулярки.
А можно - с:
PHP:
скопировать код в буфер обмена
  1. $sInput = '1,2,3,йуцуцйуцй фыкаваку';
  2. preg_match('@^([\d,]+),(\D+)$@i', $sInput, $rgMatch);
  3. $rgDigits = explode(',', $rgMatch[1]);
  4. $sOutString = $rgMatch[2];
  5. var_dump($rgDigits, $sOutString);


-----
PostgreSQL DBA
 
 Top
irysik
Отправлено: 13 Марта, 2012 - 10:29:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB