Portál AbcLinuxu, 14. května 2025 00:57
[14]: 215.600006 [16]: 0.000000 [18]: 0.000000 [20]: 50.029999 [22]: 5.030000 [24]: 0.000000
Řešení dotazu:
[:]\s(.+)$
(má to zachytit cokoliv odkonce za dvoutečkou s mezerou)
Použij preg_match_all
vopravenější verze ;D
<?php //$re = '/[:]\s(.+)$/m'; /* podtžítkův regex vracel zdovjeně dělala to tamta chytací skupina (.+) nóó takže z toho padalo takovýdle zdvojený pole v jedny půlce s dvojtečkou navíc :O ;D array(6) { [0]=> array(2) { [0]=> string(12) ": 215.600006" [1]=> string(10) "215.600006" } [1]=> array(2) { [0]=> string(10) ": 0.000000" [1]=> string(8) "0.000000" } [2]=> array(2) { [0]=> string(10) ": 0.000000" [1]=> string(8) "0.000000" } [3]=> array(2) { [0]=> string(11) ": 50.029999" [1]=> string(9) "50.029999" } [4]=> array(2) { [0]=> string(10) ": 5.030000" [1]=> string(8) "5.030000" } [5]=> array(2) { [0]=> string(10) ": 0.000000" [1]=> string(8) "0.000000" } } */ /* novej regexp co dělá že vezme všecky znaky vod pomlčky až ke konci řádku tamto ?<= je lookbehind https://www.regextutorial.org/positive-and-negative-lookbehind-assertions.php prostě jako vezmem všecko čemu předcházel znáček dvojtečky noa z toho vemem pomocí .* všecky znaky až ke značce konce stringu jakože $ tamto 'm' nakonci řiká žetoje jakoby multiline že pracuje s víc řádkovým vstupem. noa kdybys nechtěl pracovat s víc řádkama najednou ale strkal totam třeba pojednom stringu by ti jako měl stačit takovejdle regexp '/(?<=\:).*$/' bez toho m nakonci :O ;D */ $re='/(?<=\:).*$/m'; //vstupní string $str = '[14]: 215.600006 [16]: 0.000000 [18]: 0.000000 [20]: 50.029999 [22]: 5.030000 [24]: 0.000000'; //nacpem chycený do pole $matches preg_match_all($re, $str, $matches); // a vypišem var_dump($matches); ?>
hehe taky je furt googlim :D ;D supr jeto webový ide regex101 cos už vodkazoval v prvním komentu hele ;D
<?php // ak je hodnota v [] vzdy na 2 miesta, tak function zistenie($line) { return substr($line, 6); } function zistenie2($line) { return substr($line, strpos($line, ' ')+1); } function zistenie3($line) { $tails=explode(' ', $line); return $tails[1]; } echo zistenie("[14]: 215.600006")."\n"; echo zistenie2("[14]: 215.600006")."\n"; echo zistenie3("[14]: 215.600006")."\n";
strip
, ekvivalent v PHP si bude muset vygooglit.
[ 12]: 1.23
nebo [12]: 1.23
. Ale strip
pomůže při tom matchování od konce řádku, protože pokud tam budou někde mezery, tak nejspíš za posledním nebílým znakem.
function zistenie2($line) { $line=str_replace(' ', '', $line); return substr($line, strpos($line, ':')+1); }Ak chces ultra prisne, tak si napis vlastny parser.
víc bezpečnější než replace by měl jakoby bejt trim hele protože né všecky bílý znáčky mužou bejt právě vobyč mezery. jestli se teda jako ještě muže řikat bílej znak :O ;D
si myslim že von dál nebude pracovat s těma hodnotama jako se stringama nóó takže by taky jako bylo dobrý udělat cast na float hele ;D
jestli se teda jako ještě muže řikat bílej znak :O ;DOdstraňovat bílé znaky je v pořádku, ovšem až se proflákne, že před sedmnácti lety v Anglii na jedné veřejné univerzitě vytvořili jazyk, který nepřipouští naprosto vůbec žádné černé znaky, bude z toho mezinárodní skandál.
function zistenie2($line) { return substr($line, strrpos($line, ' ')+1); }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.