Portál AbcLinuxu, 11. května 2025 10:27

Dotaz: php odstránenie všetkých výskytov znaku okrem prvého výskytu

8.7.2011 13:38 adrinko | skóre: 22
php odstránenie všetkých výskytov znaku okrem prvého výskytu
Přečteno: 187×
Odpovědět | Admin
prosím vás, mám string "++abc+def" a chcel by som odstrániť všetky + okrem prvého výskytu. nápad?
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 8.7.2011 16:42 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
Odpovědět | | Sbalit | Link | Blokovat | Admin
bude ten prvni + vzdy na zacatku radku?
Don't panic!
Tarmaq avatar 8.7.2011 17:38 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
tak pokousel jsem se to resit regularama, ale zatim se mi to nepodarilo kvuli tomu ze look-behind assertion musi byt fixed.. zatim by tedy mohlo dostacovat aspon takoveto zbastlene reseni ;]
$string = '++abc++def';
$others = explode('+', $string);
if (count($others) > 1) {
    $others[0] = sprintf('%s%s', $others[0], '+');
}
print(implode('', $others));
Don't panic!
8.7.2011 19:49 Sten
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
Jednoduchý regulární výraz: s/\++/+/
Tarmaq avatar 9.7.2011 01:49 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
1) jedna se o php, sed by mu asi nepomohl
2) chce smazat vsechny + krome prvniho, ne jen ty ktere nasleduji jine +
Don't panic!
pavlix avatar 9.7.2011 03:06 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
1) jedna se o php, sed by mu asi nepomohl
Kde vidíš jaký sed?
2) chce smazat vsechny + krome prvniho, ne jen ty ktere nasleduji jine +
Pak bych to viděl na:

1) split podle prvního plusu

2) například s/\+// na druhou část řetězce
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
wamba avatar 8.7.2011 22:56 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
Odpovědět | | Sbalit | Link | Blokovat | Admin
pokud jde přepínač /e v php tak něco takového

s/(\+)/if(!$i++){$1}/ge

popř. s/\+/nahrada za plus/; s/\+/$1/g; s/nahrada za plus/+/

je to psáno v perlu tak si to upravte pro PHP
This would have been so hard to fix when you don't know that there is in fact an easy fix.
12.7.2011 01:00 mano | skóre: 9
Rozbalit Rozbalit vše Re: php odstránenie všetkých výskytov znaku okrem prvého výskytu
Odpovědět | | Sbalit | Link | Blokovat | Admin
jednoducha funkcia na riesenie tvojho problemu:
function removeNextOccurances($value, $char) {
    $index = strpos($value, $char);
    if ($index===false)
        return $value;
    else
        return (substr($value, 0, $index+1) . str_replace($char, '', substr($value, $index+1)));
}
toto by malo fungovat rychlejsie ako regularny vyraz aj ako praca s poliami, reg. vyraz ale mozes lahsie upravit.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.