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

Форум Регулярные Выражения

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

 

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

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

тема: Подставить число за место хххх и заполнить нулями прислучии

Сообщения:  [1-10]   [11-12] 

 
 автор: Лёлик   (04.04.2006 в 20:54)   письмо автору
 
   для: Trianon   (04.04.2006 в 20:52)
 

да, извиняюсь, чего-то протупил, пора идти спать

   
 
 автор: Trianon   (04.04.2006 в 20:52)   письмо автору
 
   для: Лёлик   (04.04.2006 в 20:52)
 

смотрите описание str_pad

   
 
 автор: Лёлик   (04.04.2006 в 20:52)   письмо автору
 
   для: Trianon   (04.04.2006 в 20:46)
 

где он разницу-то вычисляет, чего-то не пойму.

   
 
 автор: Trianon   (04.04.2006 в 20:46)   письмо автору
 
   для: Лёлик   (04.04.2006 в 20:42)
 

Вы запускали скрипт, или только предполагаете, что он будет так работать?

   
 
 автор: Лёлик   (04.04.2006 в 20:42)   письмо автору
 
   для: Trianon   (04.04.2006 в 20:38)
 

ему нужно нули подставлять только в том случае, если их больше чем 655, т.е. разность. к примеру если иксов 6 а длина 655 это три, тотна выходиде 000655, а у вас 000000655

   
 
 автор: Trianon   (04.04.2006 в 20:38)   письмо автору
 
   для: Лёлик   (04.04.2006 в 20:33)
 

ну и что? С тремя иксами не работает?

   
 
 автор: Лёлик   (04.04.2006 в 20:33)   письмо автору
 
   для: Trianon   (04.04.2006 в 20:24)
 

а если иксов меньне 4-х?

   
 
 автор: Trianon   (04.04.2006 в 20:24)   письмо автору
 
   для: Петровичь   (04.04.2006 в 19:14)
 

<?php
$list 
= array  ('402xxxxx524''4034xxxxx524''401xxx37524''40xxxx37524');
$pattern "^(\d+)(x+)(\d+)$";
$num 655;
foreach(
$list as   $item)
{
   
$ms '';
   if(
preg_match("#$pattern#i"$item$ms))
    echo 
"<br>".$item" => ".
        (
$ms[1]. str_pad ("$num"strlen($ms[2]), '0'STR_PAD_LEFT). $ms[3]);
}
?>

   
 
 автор: Лёлик   (04.04.2006 в 20:24)   письмо автору
 
   для: Петровичь   (04.04.2006 в 19:51)
 

во набрасал код, чую что можно и более элегантно сделать, но чего-то голова уже не варит

<?php
$str_a
='655';// начальная подставляемая строка
$str_b='402xxxxx524';// наша строка (все строки можно хранить в массиве и его оьбходить или тащить из БД)
$str_c='';// строка с ведущими нулями
$count_x=substr_count($str_b,'x');// вычисляем число иксов
$dif=$count_x-strlen($str_a);//разность между кол-м иксов и подставляемой строки
if($dif 0)for($i=0;$i<$dif;$i++){$str_c.='0';}// если расность положительная делаем строку с кол-м нулей
$str_c.=$str_a;// приклеиваем подставляемую строку
$str_c=preg_replace("/(x)/i",$str_c,$str_b,1);// подменяем получившеюся строку на место первого икса
$str_c=preg_replace("/x/i",'',$str_c);// удаляем оставшиеся иксы
//echo $str_c;
?>


можно конечно еще разрезать строку на три части, а потом склеить назад, но только вместо части с иксам нашу строку

   
 
 автор: Петровичь   (04.04.2006 в 19:51)   письмо автору
 
   для: Лёлик   (04.04.2006 в 19:31)
 

мне пока не совсем понятно как должен выглядеть сам код, у меня были мысли сперва както скопировать символы что находятся перед "xxxx" и после них, а там их подставить но вот как вычисть число и подставить нули, млин, как же для меня всё это трудно, я был бы рад за вашу помощь

   

Сообщения:  [1-10]   [11-12] 

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

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