Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Funzione per splittare non funziona

    Buon giorno, ho la necessità di dover splittare un record, che contiene oltre 100 caratteri, per la stampa su un pdf.

    Ho visto qui sul forum, un pò di funzioni, in quanto ho una versione antecedente alla 5 per poter utilizzare la str_split.
    Non riesco a capire come mai non funziona.Forse non la "richiamo" in maniera corretta:
    codice:
    function longWordWrap($string) {
    	$string = str_replace("\n", "\n ", $string); // add a space after newline characters, so that 2 words only seperated by \n are not considered as 1 word
    	$words = explode(" ", $string); // now split by space
    	foreach ($words as $word) {
    		$outstring .= chunk_split($word,100, " ") . " ";
       	}
       	return $outstring;
    }
    
    if(strlen($natura_dei_lavori)<=100){
    	$pdf->Cell(0,5,"Minore Uguale a 100 caratteri",0,1);
    }
    elseif(strlen($natura_dei_lavori)>100){
    	$pdf->Cell(0,5,"Intervento:" . longWordWrap($natura_dei_lavori),0,1);
    }
    Mi dite per favore come mai non mi splitta?
    Grazie mille...

  2. #2
    non e' chiaro quello che ti aspetti dalla funzione....

    Suppongo che tu abbia una stringa lunga lunga e la vuoi "normalizzare" suddividendola in 100 caratteri per riga.

    per prima cosa elimina i new line(\n) con uno spazio in modo da formare una stringa lunga e pulita, cioe' senza \n (occhio anche ai \r).. poi la suddividi con wordwrap(), mi sembra la soluzione piu' ovvia. ma non sono certo di aver capito il tuo problema.

    ci provo con un esempio:
    Codice PHP:

    function longWordWrap($string) {

           
    $string str_replace("\n"" "$string); 
           
           
    $outstring wordwrap($string100); 

           return 
    $outstring;


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    in pratica:
    1) estrapolo un record dal db
    2)controllo la lunghezza della stringa, se supera i 100 caratteri, devo poterne splittare il residuo,e visualizzarlo di seguito, e via dicendo.
    Insomma se la stringa e lunga 255 caratteri, splitta i primi 100, poi i secondi 100 e poi gli ultimi 55.
    Avrei cosi 3 righe sul mio pdf
    riga1=100
    riga2=100
    riga3=55

    La cosa importante è che deve mantenermi inalterate le parole, nel senso che non posso traovarmi una parola splittata al 100 carattere,tipo $string = "caratteristica"
    es: (riga1 = car , riga2 = atteristica),perchè non avrebbe senso.

    Spero di essermi spiegato.

  4. #4
    Allora la funzione che ho postato va bene.

    devi solo fare attenzione alla presenza di \r\n (return + new line) eventualmente aggiungi un str_replace tanto per parare la cosa.

    Codice PHP:
    function longWordWrap($string) {
     
           
    $string str_replace("\r\n"" "$string); 
           
    $string str_replace("\n"" "$string); 
            
           
    $outstring wordwrap($string100); 

           return 
    $outstring

    Se invece devi mantenere il return dove si trova nella stringa allora la cosa e' diversa. In questo caso dovresti usare explode separando la stringa ad ogni \n e passare ogni stringa ottenuta a wordwrap() in modo che la divida se quel capoverso e' superiore ai 100 caratteri.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    macche' ... ancora piu' semplice se vuoi conservare i return proprii dello script....
    ho fatto una prova dove mando "a capo di suo"....


    $string = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. a capo di suo\nAt vero eos et accusam et justo duo dolores et ea rebum. a capo di suo.\nStet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. a capo di suo\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.";

    echo $outstring = wordwrap($string, 100);
    manco serve fare una funzione


    edit... metto tra quote per mandare a capo la stringa

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    in pratica dovrei fare questo?
    codice:
    function longWordWrap($string) { 
    
           /*$string = str_replace("\r\n", " ", $string); 
           $string = str_replace("\n", " ", $string); */
             
           $string = explode("\n", $string); 
           $outstring = wordwrap($string, 100); 
    
           return $outstring; 
    }
    Non credo di aver capito come fare...Scusa ma ho i miei limiti...
    Se puoi a tempo perso darci un'occhiata.
    Ti ringrazio ancora..

  7. #7
    scusa, non avevo letto il tuo ultimo post, adesso provo a fare come dici, senza la funzione e poi ti dico.
    Grazia ancora....

  8. #8
    Ciao Piero.Allora ho utilizzato il wordwrap, ma funziona solo per una visualizzazione su browser, ma per il pdf, non funziona, perchè non interpreta il tag
    per splittare il resto della frase sulla riga successiva.

    Sai un'altro modo per ovviare a questo?
    io sto tentando ma, senza soluzione.

  9. #9
    per quanto riguarda, l'interpretazione di codice HTML per il tag
    ho risolto andando sul sito http://www.fpdf.org/ ed ho preso la funzione che interpreta l'HTML.

    Però, quello che non riesco a fare è mettere 3 dannati record per pagina.

    Se puoi darmi una dritta..Grazie ancora

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128
    Vuoi mettere massimo 3 righe di massimo 100 caratteri l'una per pagina?
    Quindi metti 3 righe e le successive nell'altra pagina pdf?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.