Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: kajka 08. 09. 2018, 18:22:16

Název: Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: kajka 08. 09. 2018, 18:22:16
Může mi někdo napsat regulární výraz, kterým vyberu hodnotu "19" z toho konkrétního řetězce - o089,v, 19| o098 ?
Dopracoval jsem se k '#o089([0-9]+)\|/#' což by teoreticky mělo být funkční, ale bohužel není.
Název: Re:Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: agent 08. 09. 2018, 19:27:27
Tvůj dotaz, tak jak je formulovaný, nedává smysl.
Pokud ho vezmu doslova, tak stačí regex výraz /19/ který v řetězci podřetězec "19" najde a vybere.  ;D
(na testování doporučuju třeba https://regex101.com/ )
Ale to určitě nemá být cílem.
Název: Re:Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: Kit 08. 09. 2018, 19:43:20
Kód: [Vybrat]
$result = preg_replace("#o089.* ([0-9]+)\|.*#", "$1", $str);
Název: Re:Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: Trenky dolu 08. 09. 2018, 19:53:53
Co tak hodit vic prikladu, jestli tam je pattern tzn vzdy ,cislo| bez toho bude kazdy reseni hadani ...
Název: Re:Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: kajka 08. 09. 2018, 20:20:32
Uvedená hodnota "19" se mění, zbytek zůstává ve stejném formátu. (Ta 19 je teplota) , a ano, vždy je tam cislo|.

Nakonec jsem se dostal k preg_match_all('/o089,v,(.*?)\|/s', $str, $matches); což mi funguje.
Název: Re:Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: agent 08. 09. 2018, 21:36:38
Těch možností je spousta,  tvoje řešení ale vybírá nejen číslo (teplotu) ale i mezery před ním.
Já bych třeba raději použil "/o089,v, *(-?\d*)\|/s"  - ořežu mezery a vezmu v úvahu možnou zápornou teplotu.
Název: Re:Výběr hodnoty z řetězce-regulární výraz PHP
Přispěvatel: kajka 09. 09. 2018, 11:31:43
Díky agent. Právě s tou mezerou jsem měl poté další problémy  :)