Autor Zpráva
snazimse
Profil
Zdravím,

prosím o pomoc,jak z obyčejného stringu:

Příklad:
$můj_string = "NECO 123";

Potřeboval bych, z toho stringu plaintextu vytáhnout jen to číslo jak to udělat?
Problém je v tom,že to číslo,může mít různý počet des.míst,proto substr,mi nepomůže,protože nevím,kolik to bude míst.
Prostě něco,aby mi to vytáhlo třeba pouze arabské číslice.Protože jiné číslo tam nebude.
Lze toto nějak uskutečnit v php?


Děkuji všem za odpovědi řešení!
Alphard
Profil
Jestli předtím vždy bude mezera a bude to na druhém místě, je nejjednodušší explode().
Skupinu číslic v reguláru vyberete pomocí (\d+).

Přehlédl jsem, že číslo může být desetinné, takže viz [#3]. Příště bude lepší jako příklad uvést desetinné číslo.
Kubo2
Profil
snazimse:

Povedzme regulárny výraz:

<?php

preg_match('/(\d+(?:[.,]\d+)?)/', $můj_string, $spätné_odkazy);
$číslo = (float) $spätné_odkazy[1];
// práca s $číslom

Ukážka:
pepiik
Profil *
substring samozřejmě stačí zadáš jen start parametr a lenght parametr vynecháš.

$můj_string = "NECO 123";
$cislo = substr($můj_string,5);


Funguje tedy jen pokud víš od kterého znaku začíná číslo a zároveň za číslem není další text. Jestli ne tak pak použít preg_match jak píše Kubo2
snazimse
Profil
Alphard:
Díky všem za odpovědi,pomohly mi výrazně. I když,by mě zajímalo,jak to provést ,přes ten explode.
Můžete mi sem vložit názorný příklad?


Děkuji velmi!
Alphard
Profil
explode() je méně univerzální, jak říká manuál, rozdělí řetězec podle mezer do pole. Kdyby však byl vstup vždy ve tvaru něcoMEZERA123, stačilo by (v nových verzích PHP)
echo explode(' ', 'NECO 123')[1];

To řešení s reguláry je lepší.
snazimse
Profil
Ano rozumím,děkuji!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: