Visualizzazione risultati 1 fino 13 di 13

Discussione: [Php] creare array da span class html

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito [Php] creare array da span class html

    Salve a tutti

    ho una tabella con un campo websites dove e' memorizzato del codice html

    quello che vorrei e' estrarre da <span class='alias'>Nome1</span> il nome, cioe' Nome1 e trasformalo in array

    ovviamente nel codice sono presenti diversi span class con alias, e attenzione gli alias possono essere anche uguali, tipo Nome1, Nome1 ecc..

    il risultato dovrebbe essere cosi,senza duplicati

    Nome1, Nome2, Nome3 ecc...

    ho cercato in giro ma non ho trovato nulla

    Grazie

    ho adattato questo codice di mzanella e non va

    Codice PHP:

    <?php
    require_once("connetti.php");

    $actor_id = $_GET['id'];

    $query = "SELECT
    websites
    FROM ptgweb2
    WHERE
    actor_id="
    . $actor_id;
    $arr = array();
    $result = mysql_query( $query );
    if (!
    $result)
    die(
    "mySQL error: ". mysql_error());
    while(
    $row = mysql_fetch_object( $result ) ) : ?>


    <?php
    $al
    =$row->websites;
    $risultato = explode($al, 'alias');
    foreach (
    $risultato as $res) {
    array_push($arr, $res);
    }


    ?>
    <?
    endwhile; ?>

    <?php
    natcasesort
    ($arr);

    $ok2 = array_count_values($arr);

    foreach(
    array_unique($arr) as $ok){

    }


    ?>
    Ultima modifica di blackskyisback : 01-07-2021 alle ore 14.38.50

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,144

    Predefinito

    Le funzioni mysql sono deprecate, se utilizzi PHP7 non funzioneranno. In ogni caso riesci ad estrarre le stringhe? Non sono andato nel dettaglio del codice, ma cosa significa che il codice "non va"? Cosa produce? Qualche errore? il foreach finale non ha molto senso perché è vuoto. Hai capito più o meno come funziona il codice?

    Ciao!

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Le funzioni mysql sono deprecate, se utilizzi PHP7 non funzioneranno. In ogni caso riesci ad estrarre le stringhe? Non sono andato nel dettaglio del codice, ma cosa significa che il codice "non va"? Cosa produce? Qualche errore? il foreach finale non ha molto senso perché è vuoto. Hai capito più o meno come funziona il codice?

    Ciao!
    ciao alemoppo

    si lo so', lo spiegato tantissime volte qui, non uso php 7 e non vedo il motivo di aggiornare il codice,
    funziona ed e per uso personale e non verra' mai messo online, aggiornare tutto e' una impresa

    per quanto riguarda quel codice che ho postato funziona in un altro contesto, ma non qui

    in pratica come ho spiegato dovrebbe estrami delle stringhe da un codice html e trasformare in array,

    ma non funziona

    il foreach finale e' abbinato con un filtro, non ho postato per non creare confusione
    Ultima modifica di blackskyisback : 01-07-2021 alle ore 20.32.46

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Se dovrai leggere markup html usa linguaggio lato cliente (jquery). https://jsfiddle.net/grsbt0ev/2/
    In questo esempio recupero ogni valore del span in una stringa Javascript.

    Mentre discorso diverso se devi filtrare il valore di un span che sarà creato dinamicamente in un documento html (nella pratica jquery, parsa e elabora il markup html tramite espressione regolare). In quel contesto ti può aiutare espressioni regolari e non il semplice explode di un carattere (che trasforma una stringa in uno o più array).
    Prima o poi non esisteranno programmatori capaci di capire vecchie sintassi di codice (se aspetti troppo).
    Ultima modifica di darbula : 01-07-2021 alle ore 23.19.55

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Se dovrai leggere markup html usa linguaggio lato cliente (jquery). https://jsfiddle.net/grsbt0ev/2/
    In questo esempio recupero ogni valore del span in una stringa Javascript.

    Mentre discorso diverso se devi filtrare il valore di un span che sarà creato dinamicamente in un documento html (nella pratica jquery, parsa e elabora il markup html tramite espressione regolare). In quel contesto ti può aiutare espressioni regolari e non il semplice explode di un carattere (che trasforma una stringa in uno o più array).
    Prima o poi non esisteranno programmatori capaci di capire vecchie sintassi di codice (se aspetti troppo).
    Ciao darbula,

    il codice che hai postato potrebbe anche andare... ma...

    1) devo cliccare sul buttone per vedere i risultati



    2) visualizza anche i duplicati e la formattazione lascia a desiderare



    il risultato ottimale sarebbe cosi (come ho scritto anche sopra)

    Alex T, Alex, Tex, Dylan

    anche se in ordine alfabetico e' ancora migliore

    Alex, Alex T, Dylan, Tex


    per quanto riguarda la questione programmatori, se sei uno in gamba (vedi Camuso su youtube e tanti altri su questo forum) non potrai mai dimenticare il linguaggio,
    io come ho specificato non sono un programmatore, il mio e' solo hobby e anche voglia d'imparare, ma ci vorra' del tempo

    Grazie per l'attenzione

  6. #6
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,997

    Predefinito

    Salve,
    per esludere la visualizzazione dei termini doppi, provi con questa:
    Codice:
    function CheckUniqueWord(origArray) {
        var newArray = [],
            origLength = origArray.length,
            found, x, y;
    
        for(x=0; x<origLength; x++) {
            found = undefined;
            for (y=0; y<newArray.length; y++) {
                origArray[x] = origArray[x].toLowerCase();
                if(origArray[x] === newArray[y]) {
                    found = true;
                    break;
                }
            }
            if(!found) {
                newArray.push(origArray[x]);
            }
        }
        return newArray;
    }
    Cordial saluti.

  7. #7
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da GraphOGLRisorse Visualizza messaggio
    Salve,
    per esludere la visualizzazione dei termini doppi, provi con questa:
    Codice:
    function CheckUniqueWord(origArray) {
        var newArray = [],
            origLength = origArray.length,
            found, x, y;
    
        for(x=0; x<origLength; x++) {
            found = undefined;
            for (y=0; y<newArray.length; y++) {
                origArray[x] = origArray[x].toLowerCase();
                if(origArray[x] === newArray[y]) {
                    found = true;
                    break;
                }
            }
            if(!found) {
                newArray.push(origArray[x]);
            }
        }
        return newArray;
    }
    Cordial saluti.

    Ciao,
    non ho capito, come leggo la funzione?
    Ultima modifica di blackskyisback : 05-07-2021 alle ore 12.30.33

  8. #8
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,997

    Predefinito

    Può essere usata sempicemnte in questo modo:
    Codice HTML:
    <div id="demo"></div>
    
    <script>
    function CheckUniqueWord(origArray) {
        var newArray = [],
            origLength = origArray.length,
            found, x, y;
    
        for(x=0; x<origLength; x++) {
            found = undefined;
            for (y=0; y<newArray.length; y++) {
                origArray[x] = origArray[x].toLowerCase();
                if(origArray[x] === newArray[y]) {
                    found = true;
                    break;
                }
            }
            if(!found) {
                newArray.push(origArray[x]);
            }
        }
        return newArray;
    }
    
    var str = "Lorem ipsum <span>text 1</span> Lorem ipsum <span>text 2</span> Lorem ipsum <span>text 1</span>";
    var StrToArray = [];
    var result;
    
    str.replace(/<span>(.*?)<\/span>/g, function(match, g1) 
    { 
      // alert(g1);
      StrToArray.push(g1); // aggiunta elemento nell'array
      // alert(StrToArray);
      StrToArray = CheckUniqueWord(StrToArray);
    });
    		
    for(var i=0; i<StrToArray.length; i++){	
      document.getElementById("demo").innerHTML += StrToArray[i]+"<br>";
    }	
    </script>	
    Può salvarlo senza problemi su un file in locale ed eseguirlo, facendo tutte le prove/mofdifiche che vuole.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 05-07-2021 alle ore 13.51.32

  9. #9
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    var str = "Lorem ipsum <span>text 1</span> Lorem ipsum <span>text 2</span> Lorem ipsum <span>text 1</span>";
    var StrToArray = [];
    var result;

    str.replace(/<span>(.*?)<\/span>/g, function(match, g1)
    {
    non mi e' chiara questa parte

    dovrei ricuperare i dati inseriti in <span> </span> dal campo websites

    Codice PHP:
    <?php echo $row->websites; ?>

  10. #10
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,997

    Predefinito

    Questa parte:
    Codice:
    str.replace(/<span>(.*?)<\/span>/g, function(match, g1) 
    { 
     
    });
    è quella che tramite l'espressione regolare fa il controllo della stringa per recuperare ciò che è compreso nei tag span.

    Se è riuscito ad addattare il coidcie in jquery, quindi in js, indicatogli da darbula, analogamente può fare qui.

    Ad ogni modo, questo era solo un esempio per far capire come usare la funzione CheckUniqueWord(). Se a lei va bene il cidce js derivato da quello che le ha indicato darbula, è il problema era solo i termini doppi, deve semplicmente integrare la funzione js CheckUniqueWord() in quiel codice e non nel codice php.

    Cordiali saluti.

  11. #11
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    questo e' il codice di darbula che ho adattato

    Codice PHP:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>


    <p><?php echo $row->websites; ?></p>
    <input id="button1" type="button" value="Click to see the changes" />


    <script>

    $(document).ready(function(){
    $('#button1').click(function(){
    alert($(".alias").text());
    });
    });

    </script>
    come ho scritto sopra funziona, ma devo cliccare sul butttone per visualizzare il risultato,
    vorrei se possibile evitarlo,
    poi c'e' il problema dei duplicati

    quindi adesso e' necessario abbinare i 2 codici per farlo funzionare

    sto cercando di capire come fare

  12. #12
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ma in realtà se span è creato dinamicamente dal contenuto del database, dovrebbe usare una regex in php anziché visualizzare l'output del browser. Fù un'esempio sbrigativo, tanto per fargli acquisire confidenza con jquery (visto che in anni non studia).
    Ultima modifica di darbula : 05-07-2021 alle ore 17.11.18

  13. #13
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Risolto

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •