Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Maiuscolo ed apostrofi nei titoli (passati in variabili)

    Premetto che i titoli dei miei articoli sono tutti in minuscolo con le parole separate solamente da trattini. Inoltre, ho fatto in modo che negli elenchi, mediante un while, si vadano a disporre tutti i titoli dove devono, grazie al fatto di essere memorizzati in stringhe.
    Detto ciò vogliamo che nei titoli diventino maiuscole le iniziali delle parole giuste. I CSS non mi aiutano granché, perché il capitalize può andare o sulla prima lettera del titolo o su tutte le iniziali, mentre non vogliamo un titolo del tipo "Progetto Per Il Mondo", ma "Progetto per il Mondo"!
    Questa è al soluzione che ho trovato per le maiuscole, anche se mi sembra un pochino perversa:
    Codice PHP:
    $string explode("-"$pagina);
             
    $lenght count($string);
             
    $maiusc file("maiuscole.txt"FILE_IGNORE_NEW_LINES);
             for(
    $i 0$i<$lenght-1$i++) //Perché l'ultima parola non è mai articolo, ecc.//
               
    {
                 if (!
    in_array($string[$i], $maiusc))
                   {
                    
    $string[$i] = ucwords($string[$i]);
                   }
                 
    $titolo $titolo.$string[$i]." ";
               }
             
    $titolo .= ucwords($string[$lenght-1]); 
    Nota: in "maiuscole.txt" ci sono tutte quelle parole che non dovrebbero diventarlo, come gli articoli, le preposizioni, ecc.
    Per le maiuscole, quindi, vorrei semplicemente sapere se questo è il metodo ottimale (e spero veramente di no, perché è proprio brutto!). :master:

    Per quanto riguarda gli apostrofi e gli altri segni di interpunzione il problema è più serio, forse. Qui si tratta di sostituire al momento giusto dei trattini con degli apostrofi o con delle virgole. Un metodo, diciamo, sarebbe quello di chiamare l'apostrofo "--" e la virgola "---" e sostituirli nella stringa. Chiaramente anche questa soluzione è orribile, soprattutto se visti gli indirizzi che si verrebbero a creare!
    Grazie mille a tutti, ma sono problemi di vita

  2. #2
    Indubbiamente come hai fatto tu funziona. Anche la parte dei trattini.
    Mi sorgono però alcune domande:
    1)Perché effettuare questa traformazione? per evitare caratteri non permessi in un url?
    2)Se così è, perché non urlencodi semplicemente il titolo originale? per un fattore estetico? (ovvero preferisci qualcosa del tipo titolo-dell-articolo.html rispetto a qualcosa del tipo Titolo%20dell%27Articolo.html?)
    3)Se così è, perché non ti salvi da qualche parte (db o file) le due versioni del titolo, ovvero una completa con maiuscole, virgole, ecc e una "sanitizzata" coi soli trattini?

    Ad ogni modo la soluzione tua è un pochino "perversa" perché in pratica cerchi di ricreare delle informazioni che probabilmente prima avevi e che poi hai perso trasformando il titolo coi trattini.

  3. #3
    Ecco, il concetto è che vorrei mantenere gli URL alfanumerici, minuscoli e dotati di trattini, quando serve. Tutto per questioni di leggibilità, per indirizzi seo-friendly, come si suol dire, ecc.
    Per l'aggiunta dei titoli nel database, in verità c'è sempre il fatto che cerco di scrivere script che facciano le cose al posto mio. Facendo in quel modo postato prima, avrei dovuto scrivere in una tabella solo la colonna delle pagine-elenco e la colonna delle pagine-articolo da inserire nei rispettivi elenchi. Creando invece un'altra colonna con i nomi con maiuscole, apostrofi e quant'altro, mi troverei comunque una quantità incredibile di azioni in più che dovrò fare! Per questo, basilarmente, mi premeva trovare il metodo di conversione tra le due entità.

  4. #4
    Non c'entra quasi niente col mio problema, ma avevo dimenticato di scrivere l'azzeramento della variabile $titolo e così bisogna aggiungere prima del for "$titolo = NULL".
    Ma poi, tornando a noi, aggiungendo una colonna alla tabella nel database, per richiamare ogni volta due valori anziché uno, non si avrebbe un incremento del numero di query per pagina?
    Però diciamo che in effetti (!) può essermi utile inserire nella tabella sempre una sola colonna per gli articoli, ma che sia quella con i titoli con tutti gli orpelli! In questo modo, dato che ovviamente è più facile togliere orpelli che metterli, convertirei, solamente, di volta in volta, il titolo ricco con il titolo spartano, senza creare problemi aggiungendo righe.
    Può andare così ?
    (A questo punto dovrei solo trovare un modo per sostituire tutti i caratteri non alfanumerici in trattini, rendendo tutto minuscolo)

  5. #5
    Ma le paghi a peso d'oro le colonne del db?
    La query sia che selezioni una colonna sola, sia che ne selezioni due impiega grossomodo lo stesso tempo. Inoltre il numero di queries per pagina rimane esattamente lo stesso. E' sicuramente più oneroso, computazionalmente parlando, il ricalcolo dello slug (la stringa semplificata) ad ogni pié sospinto. (fosse anche solo una volta per visualizzazione, chi te lo fa fare? lo calcoli una volta ad inserimento articolo e poi lo ripeschi quando ti serve...)
    Qui sotto una funzioncina che ti potrà comunque tornare utile, qualunque strada tu decida di percorrere:

    Codice PHP:
    function slug($string) {
            
    $bad = array(    'Š','Ž','š','ž','Ÿ','À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ÿ','Þ','þ','Ð','ð','ß','Œ','œ','Æ','æ','µ','"',"'",'“','”',"\n","\r",'_');

            
    $good = array(    'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N','O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y','TH','th','DH','dh','ss','OE','oe','AE','ae','u','','','','','','','-');

            
    $slug str_replace$bad$good$string );
            
    $slug trim($slug);
            
    $slug preg_replace("/[^a-zA-Z0-9 -]/"""$slug);
            
    $slug str_replace(" ""-"$slug);
            
    $slug strtolower($slug); 
            
    $slug substr($slug,0,40);

            return 
    $slug;
            } 
    ciao.

  6. #6
    La questione era comunque che i valori nelle colonne devo inserirli io e quindi, se la tabella ha, per dire 200 righe e 2 colonne, mi troverei con 400 campi, anziché con i 600 di una tabella con lo stesso numero di righe e 3 colonne. Niente di titanico, chiaramente, ma abbastanza noioso. Mi premeva, quindi, soltanto sapere un metodo per passare da una stringa all'altra, poi è chiaro che lo userò per calcolarmi la terza colonna senza fatica.
    Poi, in effetti, hai ragione nel dire che le query non sono un problema.
    Bene, bene. Sembra che il problema sia risolto !
    Grazie mille

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.