[php] usuwanie fragmentu stringa

0

Jaką funkcją w php usuwa się fragment stringa, np. mam:
$zmienna='ABCDEFG';
i chcę żeby z tego wywaliło, np. od 4 znaku 2 litery:
$zmienna='ABCFG';

Takie coś jak Delete() w delphi, tylko że jak ta funkcja się nazywa w php?
Wiem, że mogę funkcją substr połączyć pierwszy fragment z końcowym, ale to przecież nie o to chodzi...

0
fleming86 napisał(a)

Wiem, że mogę funkcją substr połączyć pierwszy fragment z końcowym, ale to przecież nie o to chodzi...

Dokładnie ja korzystam z tej metody bo (O DZIWO) nie ma jej w PHP (a przynajmniej jestem "tempa szczala" i nie umiem znalezdz :P)

function str_del(&$str,$start,$ile)
{

        $str=($start>0 ? substr($str,0,$start-1) : "" ).substr($str,($start>0 ? $start : 1)+$ile-1);

}
$zmienna='ABCDEFG';
str_del($zmienna,4,2);
echo $zmienna;

Dla tego ja korzystam z powyzszego kodu (napisany przeze mnie i wedlug mnie najbardziej optymalny?)

0

Oczywiście do tak prostych rzeczy wyrażenia regularne nie są zalecane.. ale podam inne podejście - dlaczego? bo można :)

$start = 3;
$ile = 2;
$regexp = "/(.{{$start}}).{{$ile}}(.*)/";
$text = 'abcdefg';
$rep = '\1\2';
$wynik = preg_replace($regexp, $rep, $text);
0
Marooned napisał(a)

...

chyba jednak się nie będę uczył bardziej wyrażeń regularnych - boję się że mnie mania dopadnie ;)

0

Czemu zaraz mania? Cały czas postęp idzie w kierunku wolniejszych ale potężniejszych platform. Porównaj liczbę programistów Assemblera i Javy.
Więc skoro RegExp szybko i prosto załatwiają temat, to nie będę się szczypał aby zrobić zawiłą funkcję działającą o 5% szybciej jeśli szybkość nie jest najważniejsza.

0
Marooned napisał(a)

...

przecież żartowałem, te

//gdybyś poszedł spać przed 7 też byś nie zakumał żartu ;P - M
//<ort>poszedłem </ort>spać przed siódmą - piąta jest przed siódmą ;P

ale co do tematu to ja naprawdę nic nie mam do wyrażeń regularnych - dzięki nim kod jest ładniejszy, krótszy, profesjonalniejszy i bardziej szpanerski ;)
jeśli chce się to wykonać parę razy to w porządku, ale jeśli chcesz np przeprawić dane z bazy danych przez skrypt i to będzie w pętli po 100 000 razy to jednak lepiej na stringu normalnie operować jeśli tylko się da, bo jednak nie jest to 5%, ale przed chwilą zrobiłem test prędkości i przeliczając czasy tak żeby funkcja abc uzyskała wynik 100%, funkcja Marooneda uzyskała wynik 185% - co prawda tylko funkcja Marooneda poprawnie przeprawiła string bo tamta funkcja okazuje się że przyjmuje numeracją "pascalowską" - znak pierwszy = index jeden

1 użytkowników online, w tym zalogowanych: 0, gości: 1