Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Scansione di Stringa
Forum - PHP - Scansione di Stringa

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 22:59
Mercoledì, 06/02/2013
ciao
eccomi qua finalmente a programma in php:D
dopo tanti programmini banali ho pensato di fare un programma che scanna una stringa e ne conta i caratteri. tanto per provare qualcosa8-|
il codice è questo
----------------------------------------
<html>
<body>
<?php
$a=0;
$i=0;
$frase = "ciao mondo.";
for ($i=0; $a == 0 ;$i++){
    if (frase[$i] == '.'){
        $a=1;
        echo "a=1";
    }
}
$i++;
echo "hai scritto $i caratteri";
?>
</body>
</html>
----------------------------------------

mi da errore nel if.. dice che non si aspetta [...
allora come si fa scannare una stringa? esiste un carattere di fine stringa(tipo \n)?
quello che non comprendo è che se faccio
echo frase[2];
funziona!

niubbo8-|

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:59
Giovedì, 07/02/2013
Codice sorgente - presumibilmente Php

  1. <html>
  2. <body>
  3. <?php
  4. $a=0;
  5. $i=0;
  6. $frase = "ciao mondo.";
  7. for ($i=0; $i < 11 ;$i++){
  8.     if ($frase[$i] == '.'){
  9.         echo $frase[$i];
  10.     }
  11. }
  12. $i = $i + 1;
  13. echo "       hai scritto $i caratteri";
  14. ?>
  15. </body>
  16. </html>


Logicamente il tuo codice non ha molto senso, ma sintatticamente mancava il $ prima di frase nell' if

Ultima modifica effettuata da il 07/02/2013 alle 18:04
PM Quote
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 18:13
Giovedì, 07/02/2013
ciao Juster!
grazie per la dritta.. davvero questo $ mi è antipatico perche lo devo portare sempre dietro!:-o
lo so che non ha senso in php, ma era un esercizio per provare a fare qualcosa. perche leggere soltanto la teoria non ha senso. tra poco inizio con il database e allora ci sara da divertirsi :)

niubbo!8-|

PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 14:14
Venerdì, 08/02/2013
le stringhe, come in tutti i linguaggi di programmazione c-like, sono array in PHP
e si scorrono come qualsiasi array
Codice sorgente - presumibilmente Plain Text

  1. for($i = 0; $i < count($string); ++$i) echo "carattere $i: " . $string[$i] . "\n";


o ancora meglio in PHP
Codice sorgente - presumibilmente PHP

  1. for($c in $string) echo "carattere " . ++$ . ": $c\n";


PM Quote
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 12:44
Sabato, 09/02/2013
ciao Qwertj,
l'esempio messo sopra ora funziona perche avevo dimenticato il segno $ come mi ha destto Juster. ma voglio chiderti riguardo il tuo codice:
Testo quotato


for($c in $string) echo "carattere " . ++$ . ": $c\n";


cosa vuol dire l'istruzione "$c in $string"?
e quel "++$" è giusto cosi o manca la varibile?
perche hai aggiunto il simbolo \n? nel linguaggio  c mi pare che sia il carattere di fine stringa.

ora sono andato oltre e ho letto le numerose funzioni per array, stringhe date ecc.. (devo dire un sacco!) e ho pensato di fare una funziona mia tanto per provare queste cose.. quindi ho fatto questo codice e vorrei chiedere a voi il perche non funziona:
Codice sorgente - presumibilmente Php

  1. <html>
  2. <body>
  3. <?php
  4. function ordine_inverso($stringa){
  5.         $x=strlen($stringa);
  6.         $j=0;
  7.         $i=0;
  8.         for ($i=($x-1);$i>=0;$i--){
  9.                 $c[$j]=$stringa[$i];
  10.                 $j++;
  11.         }
  12.         return $c;
  13. }
  14.  
  15. $frase = "ciao mondo.";
  16. echo "la variabile frase ha lunghezza ".strlen($frase)."<br>";
  17. echo ordine_inverso($frase)."<br>";
  18.  ?>
  19. </body>
  20. </html>



perche mi stampa la parola Array e non la frase inversa?!
cosa ho sbagliato?
se potete gentilmente di rispondermi con un minimo di spiegazioni cosi capisco..
sto cercando di capire ed imparare il php vi chiedo questo piccolo aiuto.
grazie in anticipo
Niubbo8-|

Ultima modifica effettuata da Niubbo il 09/02/2013 alle 12:45
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:14
Sabato, 09/02/2013
Se fossi in te farei un ciclo for con indice che parte da 1 ed arriva fino alla lunghezza di stringa + 1(incrementando di uno ogni volta l' indice) poi fare echo $stringa[strlen($stringa) - indice]; tanto per intenderci:

Codice sorgente - presumibilmente Php

  1. function ordine_inverso($stringa){
  2.         $inverso = "";
  3.         for ($i = 1; i < strlen($stringa) + 1; i++)
  4.         {
  5.              $inverso += $stringa[strlen($stringa) - i];
  6.         }
  7.         return $inverso;
  8. }
  9.  
  10. <?php
  11. echo ordine_inverso("prova");
  12. ?>


Ultima modifica effettuata da il 09/02/2013 alle 14:20
PM Quote
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 14:57
Sabato, 09/02/2013
ho provato a copiare ed eseguire il tuo codice (a parte gli errori per il $ mancante :)) mi ha dato errore fatale nella riga in qui richiami la funzione (penso perche hai messo la funzione fuori dal codice php). quindi l'ho rimessa dentro, ma non funziona. nel senso che alla fine mi stampa 0!
allora sono andato a cercare e studiare meglio le stringhe perche mi ricordo di aver letto qualcosa sulla concatenzione e bingo!:idea:
l'istruzione giusta da scrivere sarebbe questa:
Codice sorgente - presumibilmente Plain Text

  1. $inverso = $inverso.$stringa[strlen($stringa) - $i];



il punto è l'operatore di concatenamento e funziona alla perfezione!:k:
ora però voglio capire perche il mio non andava:D
grazie Juster:k:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:12
Sabato, 09/02/2013
Ah giusto! mi viene troppo naturale usare il + xD Comunque basta sostituire $c[$j]=$stringa[$i]; con
Codice sorgente - presumibilmente Plain Text

  1. $c=$c.$stringa[$i];

e tutto andrà in modo perfetto. poi $j non servirà più a nulla.

PM Quote
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 15:15
Sabato, 09/02/2013
infatti e quello che ho fatto e funziona!:k:
grazie Juster.. mi hai aiutato un sacco:D:k:



PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo