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

DenVeroid

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

Имеется примерно такие строки
402xxxxx524
4034xxxxx524
401xxx37524
40xxxx37524

нужно вместо "x" подставить число допустим "655" тогда выше приведённые строки должны быть такими

40200655524
403400655524
40165537524
40065537524

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

Фанат

oncle terrible
Команда форума
ну и что именно у тебя не получается?
или ты забыл функции работы со строками?
 

DenVeroid

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

отрезать то ладно, но вот как потом сохранить в разные переменные числа что находятся перед "xxxx" и после их
 

Фанат

oncle terrible
Команда форума
а сравнить длину цифр и ххх - никак?

все операции, которые здесь нужны, ты с легкостью можешь произвести вручную.
это означает, что и пхп ты напишешь с лёгкостью.
при желании.
 

ZN

Новичок
карбон
>тут регулы нужны
ага, без них ну вот никак. и вообще эту задачу нужно на перле решать
перечитайте топик, Фанат 2 раза сказал, как и что делать
 

DenVeroid

Новичок
спасибо, только вот как узнать сколько символов у xxx
сколько символов у числа не проблема, тут при помощи strlen() можно определить а вот иксы нужно сперва каким-то образом отделить
 

Фанат

oncle terrible
Команда форума
я считаю, что всякие str_pad, substr_replace и прочие регулярные следует осваивать исключительно ПОСЛЕ того, как ознакомился с базовыми строковыми функциями.

одно дело - понимать, что и как делает str_pad.
совсем другое - воспринимать её как чудо, как манну небесную. О! Нолики добавились!

Очень многие люди на этом форуме не понимают, что в изучении чего-либо нельзя перескакивать через ступеньку. Если ты не понял базовых основ, то и дальше не будешь понимать, как работают твои скрипты - а так и останешься компипастером, тупо копируя код, не понимая, как он работает.

в этом плане меня убивает, к примеру, когда новичку, который не знает оператора if, пишут тернарный оператор.
 

DenVeroid

Новичок
вот код, то что нужно

PHP:
<?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; 
?>
 

God

Новичок
Пользуй sprintf и будет тебе счастье
PHP:
$str1 = sprintf("402%05d524", 655);
$str2 = sprintf("40%04d37524", 655);
 
Сверху