Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak wykryć dany ciąg, bez wyrażeń regularnych
mlawnik
post
Post #1





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Witam,

pobieram sobie zawartość pewnej komórki w tabeli, przykładowo wygląda ona tak:

Przykład 1:
EPR 5

Przykład 2:
KK 3+

Potrzebny jest mi sam numer, ale jeżeli ma on +, to chciałbym otrzymać 2,5.
Mogę sobie zrobić tablicę i podmieniać 2+ ->2,5, ale czy jest jakiś sposób, aby wykryć numer z +, inny niż wyrażenia regularne?

Pozdrawiam,
mlawnik

EDIT:
Wcześniej używałem: filter_var($gradeCell, FILTER_SANITIZE_NUMBER_INT); ale nie wykrywa +, choć powinno: "Remove all characters except digits, plus and minus sign."

Ten post edytował mlawnik 7.06.2013, 15:40:56
Go to the top of the page
+Quote Post
Talidali
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 19
Dołączył: 31.05.2013

Ostrzeżenie: (0%)
-----


Nie ma. Dlaczego tak zapisujesz do bazy? Nie możesz zapisywać 2,5 zamiast 2+?
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


tutaj zdaje się że, nawet możesz użyć sscanf'a.
Nie musisz robić tablicy, po prostu jeśli wykryjesz znak +, to dodajesz do liczby 0.5;
Go to the top of the page
+Quote Post
mlawnik
post
Post #4





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


@Talidali

To komórka w tabeli html, nie mysql. To nie ja tak zapisałem, tylko muszę to odczytać.

@peter12345

W ten sposób? I jaki drugi argument do sscanf?

  1. <?php
  2. $gradeCell = 'EPR 5+'
  3. $gradeValue = filter_var($gradeCell, FILTER_SANITIZE_NUMBER_INT);
  4. $hasPlus = sscanf($gradeCell, $argumentTwo);
  5. if($hasPlus >= 1){
  6. $gradeValue++;
  7. }
  8. ?>
  9.  


EDIT: ROZWIĄZANE, DLA POTOMNYCH:

http://ideone.com/2SdBMG

  1. <?php
  2. $gradeCell = 'EPR 5+'; //get the cell value
  3. $gradeValue = filter_var($gradeCell, FILTER_SANITIZE_NUMBER_INT); //grade numerical value (the number from cell)
  4. //See if it has +, add a 0,5 then
  5. $hasPlus = strpos($gradeCell, '+');
  6. if ($hasPlus !== FALSE) {
  7. $gradeValue = $gradeValue[0] + 0.5;//Stringi mozna traktować jako tablice znaków, czegoś się nauczyłem (IMG:style_emoticons/default/tongue.gif)
  8. }
  9. echo $gradeValue;
  10.  
  11. ?>


Ten post edytował mlawnik 7.06.2013, 16:30:25
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.09.2025 - 22:13