Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Controllo lunghezza righe di un testo con php

    Salve ragazzi.
    Propongo un problema che mi è capitato oggi. Ho un sito con area di amministrazione. All'interno dell'area di amministrazione ho un form che mi permette di inserire degli articoli con tutti i vari campi (titolo, sottotitolo, testo, immagini ecc...).
    Il form è chiaramente in html ed i campi sono indicizzati come text (titolo e sottotitolo) o come textarea (testo). Chiaro che in questa fase posso controllare le righe e le colonne.

    Ma ho notato una cosa. Che inserendo il testo (in text area) invece che andare a capo automaticamente mi continua a scrivere tutto nella stessa riga anche se scrivo diecimila caratteri.

    Il risultato è il seguente. E qui entra in gioco il php. Ho un file che si chiama "news.php" all'interno del quale, tramite script php, richiamo i vari campi dell'articolo inserito, connettendomi appunto al database.

    Posto il codice per capirci:

    Codice PHP:
        <?php
    function multi_array_search($search_value$the_array)
    {
       if (
    is_array($the_array))
       {
           foreach (
    $the_array as $key => $value)
           {
               
    $result multi_array_search($search_value$value);
               if (
    is_array($result))
               {
                   
    $return $result;
                   
    array_unshift($return$key);
                   return 
    $return;
               }
               elseif (
    $result == true)
               {
                   
    $return[] = $key;
                   return 
    $return;
               }
           }
           return 
    false;
       }
       else
       {
           if (
    $search_value == $the_array)
           {
               return 
    true;
           }
           else return 
    false;
       }
    }

    include(
    "config.php");
    mysql_connect($db_host$db_user$db_password$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    $query mysql_query("select *, date_format(data,'%d-%m-%Y %H:%i') AS 'dataora' from articoli where pub != '' order by art_id") or die(mysql_error());
    while (
    $row mysql_fetch_assoc($query)){
    $array[] = $row;
    }
    ?>
    <td bgcolor="#FFFFFF" id='center'>
        <div id='contenutocentrale'>
            <div id='primanotizia'>
                <div id='categprima'>[url='reportages/archive.php?type=topic&amp;id=2']Ultima notizia[/url]</div>
                <h1 id='titolocatprima'>      <?php $result multi_array_search('1'$array); echo "[b]".$array[$result[0]]['titolo']."[/b]"
                
    ?></h1>
                <div id='autoreprimacat '>di [url='reportages/archive.php?type=author&amp;id=Ivan+Gaddari']Ivan Gaddari[/url]</div>
                <h2 id='sottotitoloprimacat'>      <?php $result multi_array_search('1'$array); echo $array[$result[0]]['sottotitolo'];?></h2>
                <div id='primoarticolo' style='min-height: 146px; height: auto !important; height: 146px'>

                    <div class='textimage'>
                        <div class='img' style='width: 202px'>
                            [img]show.php?id=<?php $result multi_array_search('1'$array); echo $array[$result[0]]['art_id']; ?>[/img]</a>
                        </div>
                    </div>
                    <?php
          $result 
    multi_array_search('1'$array);
          
    $swap explode(" "$array[$result[0]]['testo'], 91);
                foreach(
    $swap as $key => $val) if($key 90) echo $val." ";
                echo 
    ".....<a href=\"page.php?id=".$array[$result[0]]['art_id']."\">leggi</a>";
                
    ?>   
                

                
      
                <div id="pubblicatoil"><?php    
          $result 
    multi_array_search('1'$array);
          echo 
    "Pubblicato il ".substr($array[$result[0]]['dataora'],0,10)." alle "substr($array[$result[0]]['dataora'],11,5);
                
    ?> 
                </div>
                </div>
            </div>
    Ora, quello che vorrei ottenere è semplice. Un controllo sulla lunghezza delle righe relative al campo "testo". Infatti senza questo controllo il testo inserito mi sfasa tutta la struttura della pagina perchè come detto, al momento dell'inserimento nel form, se metto 10000 caratteri me li scrive senza andare a capo. Nella pagina html mi riporta i 10000 caratteri tutti su un'unica riga, allargandomi la pagina stessa a dismisura!!! Come potrete notare c'è già quello relativo alla lunghezza delle colonne. Ossia, raggiunti 90 caratteri viene troncato il testo.
    Come posso fare per controllare la lunghezza delle righe? In modo che ad esempio dopo 50 caratteri vada a capo su un'altra riga nuova?

    Spero di essere stato abbastanza chiaro. Grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Una piccola funzione ricorsiva può aggiungere uno "\n" (o magari un "
    ") ogni N caratteri
    Codice PHP:
    function dividi_riga($riga,$n)
    {
      if(
    strlen($riga)<$n)
        return 
    $riga
      
    else
        return 
    substr($riga,0,$n)."\n".dividi_riga(substr($riga,$n),$n);
    }
    ...
    $stringa dividi_riga($stringa,100); 

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Grazie Leilond,
    ma come posso inserirla e richiamarla nel codice che ho postato prima?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: Controllo lunghezza righe di un testo con php

    Originariamente inviato da marckhh
    Come posso fare per controllare la lunghezza delle righe? In modo che ad esempio dopo 50 caratteri vada a capo su un'altra riga nuova?

    Spero di essere stato abbastanza chiaro. Grazie mille
    http://se.php.net/manual/it/function.wordwrap.php


  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Allora Nicola,
    innanzitutto grazie. Ho appena visto quel che mi hai postato. Ora dimmi se ho capito bene.
    Io ho il form di inserimento ed il file che prende i dati inseriti nel form. Il form si chiama "forminse.php", mentre il file che elabora i dati "inse.php"

    La modifica proposta nel manuale va inserita nel file "inse.php"?

    Ossia:

    Codice PHP:
    <?php
    $titolo 
    htmlentities(strip_tags($_POST["titolo"]));
    $sottotitolo htmlentities(strip_tags($_POST ["sottotitolo"]));
    $testo str_replace("\n""
    "
    ,$_POST["testo"]);
    $autore htmlentities(strip_tags($_POST["autore"]));
    $type $_FILES['file']['type'];
    $nome $_FILES['file']['name'];
    $size $_FILES['file']['size'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine addslashes ($immagine);
    $max_size 900000;
    if(
    $titolo=="")
    {
    print (
    "Il titolo è obbligatorio
    <a href=\"forminse.php\">indietro</a>
    "
    );
    }
    elseif(
    $sottotitolo=="")
    {
    print 
    "Il sottotitolo è obbligatorio
    <a href=\"forminse.php\">indietro</a>
    "
    ;
    }
    elseif(
    $testo=="")
    {
    print 
    "Il testo è obbligatorio
    <a href=\"forminse.php\">indietro</a>
    "
    ;
    }
    elseif(
    $immagine=="")
    {
    print 
    "L'immagine è obbligatoria
    <a href=\"forminse.php\">indietro</a>
    "
    ;
    }
    elseif(
    $size $max_size)
    {
    print 
    "L'immagine supera i 900 kb. Il file è troppo grande
    <a href=\"forminse.php\">indietro</a>
    "
    ;
    }
    else
    {
    include(
    "config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    mysql_query("insert into articoli (titolo, sottotitolo, testo, autore, nome, size, type, immagine) values ('$titolo', '$sottotitolo', '$testo','$autore','$nome','$size','$type','$immagine')");    
    $ultimo_id mysql_insert_id();
    mysql_close();
    ?>
    In questa parte di codice? Per intenderci:

    Codice PHP:
    $testo str_replace("\n""
    "
    ,$_POST["testo"]);
    $newtext wordwrap($testo8"\n"1); 
    E' corretto?


    p.s. mi viene però un dubbio. Non è che mi taglia le parole quando va a capo?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Il wordwrap lo applichi semplicemente in fase di visualizzazione quando dai l'echo della tua variabile. No, non ti tronca le parole.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Originariamente inviato da nicola75ss
    Il wordwrap lo applichi semplicemente in fase di visualizzazione quando dai l'echo della tua variabile. No, non ti tronca le parole.

    In che senso? Posso utilizzarlo direttamente nella pagine "news.php"? (ossia quella che visualizza gli articoli pubblicati?)

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Per intenderci:

    Codice PHP:
    <?php $result multi_array_search('1'$array); echo "[b]".$array[$result[0]]['titolo']."[/b]"
    ?>
    Se volgio inserirlo in questa riga di codice che richiama il titolo dell'articolo, come posso fare?

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Sì.

    Ho fatto copia incolla di quello che hai scritto prima. Vedi come la stampa con e senza wordwrap.

    Codice PHP:
    $stringa "Ora, quello che vorrei ottenere è semplice. Un controllo sulla lunghezza delle righe relative al campo \"testo\". Infatti senza questo controllo il testo inserito mi sfasa tutta la struttura della pagina perchè come detto, al momento dell'inserimento nel form, se metto 10000 caratteri me li scrive senza andare a capo. Nella pagina html mi riporta i 10000 caratteri tutti su un'unica riga, allargandomi la pagina stessa a dismisura!!! Come potrete notare c'è già quello relativo alla lunghezza delle colonne. Ossia, raggiunti 90 caratteri viene troncato il testo.
    Come posso fare per controllare la lunghezza delle righe? In modo che ad esempio dopo 50 caratteri vada a capo su un'altra riga nuova?"
    ;
    echo 
    $stringa;
    echo 
    '
    '
    ;
    echo 
    wordwrap($stringa50"
    \n"
    ,1); 

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Visto.
    Quindi qui risulterebbe così:

    Codice PHP:
    <?php $result multi_array_search('1'$array); echo "[b]" .wordwrap($array[$result[0]]['titolo'], 50"
    \n"
    ,1) ."[/b]"
    ?>
    Giusto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.