Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: Comprimere stringhe

  1. #1

    Comprimere stringhe

    E' possibile comprimere una stringa?


    2. Se avessi un testo tipo questo:



    aaaaaaaaaa bbbaaaccccc


    potrei fare in modo che venga traadoto cosi'?


    a x 10 b x 3 c x 5



    Insomma idee su funzioni che mi permettono di comprimere e sintetizzare una strainga?

  2. #2
    upp vi prego!!!!!!!!

  3. #3
    vi scongiuro


    Non riesco a trovare e funzioni (tutte) relative alle stringhe

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    $stringa str_replace(' ','',$stringa);
    $caratteri preg_split('//'$stringa, -1PREG_SPLIT_NO_EMPTY);
    print_r(array_count_values($caratteri)); 
    se poi ti servono conteggi parziali e non complessivi è da rivedere.

  5. #5

    Re: Comprimere stringhe

    Originariamente inviato da Noffinganzo92
    E' possibile comprimere una stringa?


    2. Se avessi un testo tipo questo:



    aaaaaaaaaa bbbaaaccccc


    potrei fare in modo che venga traadoto cosi'?


    a x 10 b x 3 c x 5
    virgole, spazi o altri caratteri come li inserisci nel compresso ?


    Originariamente inviato da Noffinganzo92
    Insomma idee su funzioni che mi permettono di comprimere e sintetizzare una strainga?
    hai la Zlib con gzip, bzip, volendo hai classi per WinZip e per finire hai LZMA della 7Zip ... questi sono compressori
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    no...a me interessava agire solo sulle dtringhe e non utilizzare gzip

  7. #7
    Prova in questo modo:
    Codice PHP:
    $string='aaaaaaaaaa bbbaaaccccc';
    echo 
    preg_replace('/([^\\W\\d])\\\\1+/e','"$1x".strlen("$0")',$string) ; 
    Così come è messa scrive "lettera"x"lunghezza" e la sostituzione avviene solo per le lettere e per ripetizioni maggiori di 1.
    Ovviamente se hai anche numeri nelle stringhe dovresti aggiungere dei delimitatori ai valori sostituiti.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  8. #8
    grazie!!!! Ora proverò!


    Per fare in modo che vengano interpretati tutti i caratteri bisogna scrivere molto codice?



    EDIT: vieni da trento?

  9. #9
    non mi sono spiegato bene

    Allora mettiamo che io abbia un file prova.txt


    Lo apro, lo leggo e memorizzo tutto il contenuto in una var string.

    Poi riproduco ogni lettera doppia con un' altra formula...in modo che se sul txt c' è scritto


    aaaaaaaaaaaaaaaaaaaaaaaaaa ecc... bbbbb


    lo script lo elabora e da come output lo stesso codice, ma con una formula diversa....

    ripeti a per x volte e poi b....


    Casino? Mi sa che chiedo una cosa impossibile

  10. #10
    io non capisco a cosa serva, comunque la butto li ...
    codice:
    function getChars(&$str) {
    	$arr = $output = array();
    	$addChar = create_function('&$arr, $char', '
    		$length = count($arr) - 1;
    		if($length > -1 && $arr[$length]["char"] == $char)
    			$arr[$length]["times"]++;
    		else
    			array_push($arr, array("char"=>$char, "times"=>1));
    		return "";
    	');
    	preg_replace('/[^\a]/e', '$addChar($arr, "$0")', $str);
    	for($i = 0, $length = count($arr); $i < $length; $i++)
    		array_push($output, $arr[$i]["char"].'x'.$arr[$i]["times"]);
    	return implode(' ', $output);
    }
    
    $str = 'aaaaaaaaaabbbaaaccccc'; 
    echo getChars($str);

    [edit]
    se consideri che lettere multiple in testi normali non sono mai più di 2 e se consideri che questo tuo "compressore" per ogni doppione scrive 3 caratteri ($cxN) e se consideri che per ogni NON doppione invece di un carattere occupi di nuovo 3 ($cx1 invece di $c) ... vedi che invece di un compressore stai cercando di fare un "ingigantore" di stringhe ... i compressori sono altro
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.