Малко питане за трим на стринг

9 отговора 265 прегледа
#1

Малко питане за трим на стринг

Привет,

опитвам се да взема част от стринг, например 40476TH989(B)D3 .

Ще бъда много благодарен, ако ми дадете насоки как да разделя горния стринг на два отделни: 40476 и TH989(B)D3

всичките подобни стрингове имат цифри отпред и букви в последствие, ако това може да помогне.

Благодаря предварително.

Поздрави.

Отговор
в отговор на deux #2

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
Отговор
в отговор на deux #3

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";
?>

При мен се получи точно каквото ти трябва.

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #4

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"

Отговор
в отговор на phpGuru #5

уффф

ама и аз съм идиот ;-)) общият вариант е още по-лесен, а аз некви глупост с substr и count пиша ;-))

$buf = '40476TH989(B)D3';
preg_match('/^([0-9]+)(.*)$/', $buf, $matches);

$part1 = $matches[1];
$part2 = $matches[2];

var_dump($part1, $part2);

Отговор
в отговор на phpGuru #6

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";
?>

Но второто ти решение е по-добро.

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #7

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 на брой пъти нещото, а че ще върне колко пъти е сменено

[линк]

Отговор
в отговор на phpGuru #8

Off Topic

[линк] ще редиректне към bg.php.net/str-replace, а това от своя страна няма да изкара документацията за str_replace()
та въпроса ми е и при вас ли bg.php.net се ебава или само при мен ?

Break The UnBreakable
Отговор
в отговор на nupaT #9

Re: Off Topic

амиии .... като начало ползваш - а не _
str_replace ти си написал str-replace

:-)) май тва трябва да е ;-))

аз ползвам bg2.php.net защото е bg.php.net ми е правил и на мен проблеми, но точно в тоз случай си работи

Отговор
в отговор на phpGuru #10

Re: Малко питане за трим на стринг

Имам един познат, който казва "Човек се учи докато е жива жена му".

Та и аз така. Явно не съм чел като хората.

Благодаря за забележката.

И най-ярките личности си плащат тока.
Отговор