Малко питане за трим на стринг
9 отговора
265 прегледа
Малко питане за трим на стринг
Привет,
опитвам се да взема част от стринг, например 40476TH989(B)D3 .
Ще бъда много благодарен, ако ми дадете насоки как да разделя горния стринг на два отделни: 40476 и TH989(B)D3
всичките подобни стрингове имат цифри отпред и букви в последствие, ако това може да помогне.
Благодаря предварително.
Поздрави.
опитвам се да взема част от стринг, например 40476TH989(B)D3 .
Ще бъда много благодарен, ако ми дадете насоки как да разделя горния стринг на два отделни: 40476 и TH989(B)D3
всичките подобни стрингове имат цифри отпред и букви в последствие, ако това може да помогне.
Благодаря предварително.
Поздрави.
Re: Малко питане за трим на стринг
Малко дървено решение ама ... върши работа
$second = false;
$var = "40476TH989(B)D3";
for ($i=0;$i<strlen($var);$i++):
if (!is_numeric($var{$i})):
$second = true;
endif;
!$second?$int .= $var{$i}:$str .= $var{$i};
endfor;
Break The UnBreakable
$second = false;
$var = "40476TH989(B)D3";
for ($i=0;$i<strlen($var);$i++):
if (!is_numeric($var{$i})):
$second = true;
endif;
!$second?$int .= $var{$i}:$str .= $var{$i};
endfor;
Break The UnBreakable
Re: Малко питане за трим на стринг
Ето и моето предложение:
$buf = '40476TH989(B)D3';
$bi = split('[a-z,A-Z]', $buf);
$first = $bi[0];
$second = str_replace($first, '', $buf);
print 'first = '.$first.', second = '.$second."
\n";
?>
При мен се получи точно каквото ти трябва.
И най-ярките личности си плащат тока.
$buf = '40476TH989(B)D3';
$bi = split('[a-z,A-Z]', $buf);
$first = $bi[0];
$second = str_replace($first, '', $buf);
print 'first = '.$first.', second = '.$second."
\n";
?>
При мен се получи точно каквото ти трябва.
И най-ярките личности си плащат тока.
Re: Малко питане за трим на стринг
това има малка опасност, ако това, което е отпред се повтаря някъде и отзат .... иииии ще го затриеш ;-))
ако се знае, че са само 5 цифрии
$part1 = substr($buf, 0, 5);
$part2 = substr($buf, 5);
ако не
$buf = '40476TH989(B)D3';
preg_match('/^([0-9]+)/', $buf, $matches);
$part1 = $matches[0];
$part2 = substr($buf, strlen($part1));
var_dump($part1, $part2);
резултата ще е
string(5) "40476"
string(10) "TH989(B)D3"
ако се знае, че са само 5 цифрии
$part1 = substr($buf, 0, 5);
$part2 = substr($buf, 5);
ако не
$buf = '40476TH989(B)D3';
preg_match('/^([0-9]+)/', $buf, $matches);
$part1 = $matches[0];
$part2 = substr($buf, strlen($part1));
var_dump($part1, $part2);
резултата ще е
string(5) "40476"
string(10) "TH989(B)D3"
уффф
ама и аз съм идиот ;-)) общият вариант е още по-лесен, а аз некви глупост с substr и count пиша ;-))
$buf = '40476TH989(B)D3';
preg_match('/^([0-9]+)(.*)$/', $buf, $matches);
$part1 = $matches[1];
$part2 = $matches[2];
var_dump($part1, $part2);
$buf = '40476TH989(B)D3';
preg_match('/^([0-9]+)(.*)$/', $buf, $matches);
$part1 = $matches[1];
$part2 = $matches[2];
var_dump($part1, $part2);
Re: Малко питане за трим на стринг
Прав си. Ето така е сигурно:
$buf = '40476TH989(B)D3';
$bi = split('[a-z,A-Z]', $buf);
$first = $bi[0];
$second = str_replace($first, '', $buf, 1);
print 'first = '.$first.', second = '.$second."\n";
?>
Но второто ти решение е по-добро.
И най-ярките личности си плащат тока.
$buf = '40476TH989(B)D3';
$bi = split('[a-z,A-Z]', $buf);
$first = $bi[0];
$second = str_replace($first, '', $buf, 1);
print 'first = '.$first.', second = '.$second."\n";
?>
Но второто ти решение е по-добро.
И най-ярките личности си плащат тока.
Re: Малко питане за трим на стринг
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count])
Note: As of PHP 5.0.0 the number of matched and replaced needles (search) will be returned in count which is passed by reference. Prior to PHP 5.0.0 this parameter is not available.
така не може да се използва str_replace!! това е параметър подаван by reference и може да е само променлива, а не директно число
също така го има само в 5-та версия и не пише, че ще замени само count на брой пъти нещото, а че ще върне колко пъти е сменено
[линк]
Note: As of PHP 5.0.0 the number of matched and replaced needles (search) will be returned in count which is passed by reference. Prior to PHP 5.0.0 this parameter is not available.
така не може да се използва str_replace!! това е параметър подаван by reference и може да е само променлива, а не директно число
също така го има само в 5-та версия и не пише, че ще замени само count на брой пъти нещото, а че ще върне колко пъти е сменено
[линк]
Off Topic
[линк] ще редиректне към bg.php.net/str-replace, а това от своя страна няма да изкара документацията за str_replace()
та въпроса ми е и при вас ли bg.php.net се ебава или само при мен ?
Break The UnBreakable
та въпроса ми е и при вас ли bg.php.net се ебава или само при мен ?
Break The UnBreakable
Re: Off Topic
амиии .... като начало ползваш - а не _
str_replace ти си написал str-replace
:-)) май тва трябва да е ;-))
аз ползвам bg2.php.net защото е bg.php.net ми е правил и на мен проблеми, но точно в тоз случай си работи
str_replace ти си написал str-replace
:-)) май тва трябва да е ;-))
аз ползвам bg2.php.net защото е bg.php.net ми е правил и на мен проблеми, но точно в тоз случай си работи
Re: Малко питане за трим на стринг
Имам един познат, който казва "Човек се учи докато е жива жена му".
Та и аз така. Явно не съм чел като хората.
Благодаря за забележката.
И най-ярките личности си плащат тока.
Та и аз така. Явно не съм чел като хората.
Благодаря за забележката.
И най-ярките личности си плащат тока.