Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak pogrubić w stringu liczbę / cyfrę ?
Forum PHP.pl > Forum > Przedszkole
Setesh
Jak można sprawdzić czy w stringu znajduje się liczba/cyfra między literami/słowami i ją pogrubić ?

chodzi mi o coś takiego :

  1. <?php
  2. $stan_zosi = 'Zosia ma 53.12 zł które musi wydać na bilet miesięczny i chleb. zakładając że ch
    leb kosztuje 2.30 zł a bilet 42 zł to ile zostanie jej reszty którą będzie mogła 
    przeznaczyć na kosmetyki ?'
    ;
  3.  
  4. // Z tego wyżej chciałem zrobić tak :
  5.  
  6. $stan_zosi = 'Zosia ma <b>53.12</b> zł które musi wydać na bilet miesięczny i chleb. zakładając że chleb kosztuj
    e <b>2.30</b> zł a bilet <b>42</b> zł to ile zostanie jej reszty którą będzie mogła przeznaczyć na kosmetyki ?'
    ;
  7. ?>


Ktoś wie jak to zrobić ? Ja szukam właśnie informacji bo ponoć jest funkcja isnumeric która ponoć sprawdza czy wartość zmiennej jest numeryczna ale nie wiem czy zrobię to sad.gif
nospor
  1. <?php
  2. $stan_zosi = 'Zosia ma 53.12 zł które musi wydać na bilet miesięczny i chleb. zakładając że chleb kosztuje 2.30 zł a bilet 42 zł to ile zostanie jej reszty którą będzie mogła przeznaczyć na kosmetyki ?';
  3.  
  4. $stan_zosi = preg_replace('/(d+.?d+)/', '<b>1</b>',$stan_zosi);
  5. echo $stan_zosi;
  6. ?>
Setesh
Dziwne... w jednym przypadku mi działa a w innym nie chce to zadziałać sad.gif

  1. <?php
  2. $Zawartosc = preg_replace('/(d+.?d+)/', '<font color=red>1</font>', $Zawartosc);
  3. ?>
nospor
oj.... to podaj ten przypadek, gdy ci nie dziala.
Być moze popelnilem jakis blad
Setesh
Nie chodzi mi o to że błąd bo nie ładnie jest pouczać kogoś jak samemu się na tym nie zna ale... co do "błędów" :

jak mam napisane "F11" to koloruje (zmieniłem pogrubianie na kolor czerwony) chociaż nie powinno natomiast jak jest "5/2000" to koloruje "2000" ale 5 już nie sad.gif

Nie żebym pouczał ale to chyba wina tego wpisu w 1 parametrze bo jak nie i coś u mnie to chyba się pochlastam sad.gif

Czy da się zrobić tak aby było że tylko cyfra musi być aby pokolorowało a obok niej spacje nawias lub coś innego byle nie litera ?

Tak samo jak piszę zm=12 to nie koloruje 12 sad.gif
Darti
Jeśli mogę się wtrącić: zacznij się chlastać bo kod od @nospor działa idealnie i wg zamierzeń. Ma kolorować (pogrubiać) liczby i liczby rozdzielone kropką i to robi.
nospor
@Darti no nie do konca, bo okazalo sie, ze ma tez kolorwac takie przypadki 5/2000 a nie kolorowac F11

@Setesh
Oto chodzi:
Kod
$stan_zosi = 'Zosia ma $zm=12 F11 ala 5/200 ola 53.12 zł które musi wydać na bilet miesięczny i chleb. zakładając że chleb kosztuje 2.30 zł a bilet 42 zł to ile zostanie jej reszty którą będzie mogła przeznaczyć na kosmetyki ?';

$stan_zosi = preg_replace('/[^\w](\d+)/', '<b>\\0</b>',$stan_zosi);
echo $stan_zosi;

?
Setesh
no już bardziej smile.gif F11 itp nie koloruje ale... chodziło mi o kolorowanie samych liczb/cyfr.

Aktualnie to jak mam

  1. <?php
  2. $stan_zosi = 'Zosia ma -1 (0, "sss", 1.123); $zm=12 F11 ala 5/200 ola 53.12 zł które musi wydać na bilet miesięczny i chleb. zakładając że chleb kosztuje 2.30 zł a bilet 42 zł to ile zostanie jej reszty którą będzie mogła przeznaczyć na kosmetyki ?';
  3.  
  4. $stan_zosi = preg_replace('/[^w](d+)/', '<b>0</b>',$stan_zosi);
  5. echo $stan_zosi;
  6. ?>


to wynik jest taki że :

  1. Zosia ma <b>-1</b> <b>(0</b>, "sss",<b> 1</b><b>.123</b>); $zm<b>=12</b> F11 ala<b> 5</b><b>/200</b> ola<b> 53</b><b>.12</b> zł które musi wydać na bilet miesięczny i chleb. zakładając że chleb kosztuje<b> 2</b><b>.30</b> zł a bilet<b> 42</b> zł to ile zostanie jej reszty którą będzie mogła przeznaczyć na kosmetyki ?


Chodzi mi o to że jak będzie liczba czy cyfra to aby ją pogrubiło czyli tak jak myślę to...

jak znajdzie coś takiego jak niżej to niech wykona z tego (=>) to o co mi chodzi : (10.11 - niby losowa cyfra dynamicznie się zmieniająca)

Cytat
" 10.11" => " <b>10.11</b>"
",10.11" => ",<b>10.11</b>"
"=10.11" => "=<b>10.11</b>"
"-10.11" => "-<b>10.11</b>"
"10.11/10.11" => "<b>10.11</b>/<b>10.11</b>"
"10.11*10.11" => "<b>10.11</b>*<b>10.11</b>"
"10.11-10.11" => "<b>10.11</b>-<b>10.11</b>"
"10.11+10.11" => "<b>10.11</b>+<b>10.11</b>"

" 10.11/10.11" => " <b>10.11</b>/<b>10.11</b>"
",10.11*10.11" => ",<b>10.11</b>*<b>10.11</b>"
"=10.11-10.11" => "=<b>10.11</b>-<b>10.11</b>"
"-10.11+10.11" => "-<b>10.11</b>+<b>10.11</b>"


^- Coś właśnie tego typu ma być a jak znajdzie F11 czy jakakolwiek inna liczbę z literka obok (np : Zmienna1) to niech ją ominie

Możecie mi napisać gdzie znajdę opis składni tego pierwszego parametru odpowiedzialnego za maskę ? bo z tego jakoś nie mogę skumać co za co odpowiada a chcę też sam coś wykombinować (i najlepiej przed wami to sie pochwale że też robie a nie że siedzę na (_|_) i czekam aż wy zrobicie smile.gif )

// znikam na kilka godzin do szpitala jak przyjadę to dopisze co i jak i co ja wykombinuje jakby co
Kicok
O wyrażeniach regularnych możesz poczytać na php.net lub na google poszukać jakiegoś kursu w języku polskim. Fakt, jest to trochę skomplikowane i nieczytelne dla laika, ale bardzo przydatne ;]

Np:
  1. <?php
  2.  
  3. $str = 'Zosia ma -1 (0, "sss", 1.123); $zm=12 F11 ala 5/200 ola 53.12 zł które musi wydać na bilet miesięczny i chleb. zakładając że chl
    eb kosztuje 2.30 zł a bilet 42 zł to ile zostanie jej reszty którą będzie mogła p
    rzeznaczyć na kosmetyki ?
  4.  
  5. 10.11
  6. ,10.11
  7. =10.11
  8. -10.11
  9. 10.11/10.11
  10. 10.11*10.11
  11. 10.11-10.11
  12. 10.11+10.11
  13.  
  14.  10.11/10.11
  15. ,10.11*10.11
  16. =10.11-10.11
  17. -10.11+10.11';
  18.  
  19.  
  20. $str = preg_replace( '/(^|[^a-z0-9])([0-9]+(.[0-9]+)?)/mi', '$1<b>$2</b>', $str );
  21. echo( nl2br( $str ) );
  22.  
  23. ?>

znaczy mniej więcej:
- znajdź początek tekstu/jednego wiersza ^
- lub |
- jakiś znak, nie będący ani literą ani cyfrą [^a-z0-9]
- a zaraz za tym mają być cyfry [0-9]
- ma ich być co najmniej jedna +
- za tymi cyframi poszukaj kropki \.
- a za nią kolejnych cyfr (co najmniej jedna) [0-9]+
- - kropka, a po niej cyfry (\.[0-9]+)
- - mogą wystąpić raz, ale nie muszą ?

Zamień to na:
- dane pobrane z pierwszego nawiasu okrągłego $1
- <b>
- dane z drugiego nawiasu okrągłego $2
- </b>
Setesh
Ok wielkie dzięki za linka smile.gif już zabieram się za naukę smile.gif

ps... małe zapytanie... a dlaczego w kodzie 5/200 całe pogrubia a jak dam 5.10/200 to już pogrubia bez znaku (/) ?
Kicok
?

Nigdy nie pogrubia znaku /:
Kod
$zm=<b>12</b> F11 ala <b>5</b>/<b>200</b> ola <b>53.12</b> z
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.