Visualizzazione risultati 1 fino 9 di 9

Discussione: Codice con php8 non funziona

  1. #1
    albenessereblog non è connesso Utente attivo
    Data registrazione
    29-12-2021
    Messaggi
    326

    Predefinito Codice con php8 non funziona

    Questo codice con PHP 7.3 funziona, ma se imposto 8 non funziona più.

    Codice PHP:
    jQuery(document).ready(function(){
    var search = '<?php echo get_search_query(); ?>';
    var fromsearch = '<?php echo $_GET['fromsearch']; ?>';

    if(search !== null && search !== ''){
    jQuery('body').highlight(search,'highlight');
    jQuery('#main article a').each(function(i,e){
    var newUrl = jQuery(e).prop('href') + '?fromsearch=' + encodeURIComponent(search);
    this.href = newUrl;
    });
    }

    if(fromsearch !== null && fromsearch !== ''){
    jQuery('body').highlight(fromsearch,'highlight');
    }
    });
    Ultima modifica di dreadnaut : 05-02-2023 alle ore 20.35.15

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

    Predefinito

    Codice:
    jQuery(document).ready(function(){
      var search = '<?php echo get_search_query(); ?>';
      var fromsearch = '<?php
    $outputdarbula = '';
    if(isset($_GET['fromsearch']) && is_string($_GET['fromsearch'])) {
    $outputdarbula = $_GET['fromsearch'];
    }
    echo $outputdarbula; ?>'; 
    
      if(search !== null && search !== ''){ 
       jQuery('body').highlight(search,'highlight');
          jQuery('#main article a').each(function(i,e){
            var newUrl =  jQuery(e).prop('href') + '?fromsearch=' + encodeURIComponent(search);
            this.href = newUrl;
          });
       }
       
       if(fromsearch !== ''){
          jQuery('body').highlight(fromsearch,'highlight');
       }
    });

  3. #3
    albenessereblog non è connesso Utente attivo
    Data registrazione
    29-12-2021
    Messaggi
    326

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Codice:
    jQuery(document).ready(function(){
      var search = '<?php echo get_search_query(); ?>';
      var fromsearch = '<?php
    $outputdarbula = '';
    if(isset($_GET['fromsearch']) && is_string($_GET['fromsearch'])) {
    $outputdarbula = $_GET['fromsearch'];
    }
    echo $outputdarbula; ?>'; 
    
      if(search !== null && search !== ''){ 
       jQuery('body').highlight(search,'highlight');
          jQuery('#main article a').each(function(i,e){
            var newUrl =  jQuery(e).prop('href') + '?fromsearch=' + encodeURIComponent(search);
            this.href = newUrl;
          });
       }
       
       if(fromsearch !== ''){
          jQuery('body').highlight(fromsearch,'highlight');
       }
    });
    Funziona, però ho notato che se ci sono più parole in un paragrafo me ne trova solo una e non tutte in quel paragrafo.
    Se invece ho una sola parola in ogni paragrafo le trova tutte.

    Codice HTML:
    <script>
    jQuery.fn.highlight = function(what, spanClass) {
      return this.each(function() {
        var container = this,
          content = container.innerHTML,
          pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)', 'ig'),
          replaceWith = '$1<span ' + (spanClass ? 'class="' + spanClass + '"' : '') + '">$2</span>$3',
          highlighted = content.replace(pattern, replaceWith);
        container.innerHTML = highlighted;
      });
    }
    
    var getUrlParameter = function getUrlParameter(sParam) {
      var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;
    
      for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');
    
        if (sParameterName[0] === sParam) {
          return sParameterName[1] === undefined ? true : sParameterName[1];
        }
      }
    };
    
    jQuery(document).ready(function(){
      var search = '<?php echo get_search_query(); ?>';
      var fromsearch = '<?php $output = '';
    if(isset($_GET['fromsearch']) && is_string($_GET['fromsearch'])) {
    $output = $_GET['fromsearch'];
    }
    echo $output; ?>'; 
    
      if(search !== null && search !== ''){ 
       jQuery('body').highlight(search,'highlight');
          jQuery('#main article a').each(function(i,e){
            var newUrl =  jQuery(e).prop('href') + '?fromsearch=' + encodeURIComponent(search);
            this.href = newUrl;
          });
       }
       
       if(fromsearch !== null && fromsearch !== ''){
          jQuery('body').highlight(fromsearch,'highlight');
       }
    });
    </script>
    Ultima modifica di albenessereblog : 05-02-2023 alle ore 23.10.50

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Codice PHP:
    var fromsearch = '<?php $output = '';
    if(isset(
    $_GET['fromsearch']) && is_string($_GET['fromsearch'])) {
    $output = $_GET['fromsearch'];
    }
    echo
    $output; ?>';
    Può essere anche scritto
    Codice PHP:
    var fromsearch = '<?= $_GET['fromsearch']) ?? '' ?>';
    cioé "stampa il campo dell'array se esiste, altrimenti una stringa vuota".

  5. #5
    albenessereblog non è connesso Utente attivo
    Data registrazione
    29-12-2021
    Messaggi
    326

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Codice PHP:
    var fromsearch = '<?php $output = '';
    if(isset(
    $_GET['fromsearch']) && is_string($_GET['fromsearch'])) {
    $output = $_GET['fromsearch'];
    }
    echo
    $output; ?>';
    Può essere anche scritto
    Codice PHP:
    var fromsearch = '<?= $_GET['fromsearch']) ?? '' ?>';
    cioé "stampa il campo dell'array se esiste, altrimenti una stringa vuota".
    Questo è lo stesso codice che ho già io.
    A me serve una modifica che trova la parola cercata, es. se in un articolo ho 20 parole "casa" me le deve trovare tutte 20, invece ora ne trova solo qualcuna.

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

    Predefinito

    Se aggiungi multiline m alla tua RegExp prima del flag ignoreCase i ottieni il risultato atteso?
    Ultima modifica di darbula : 06-02-2023 alle ore 00.39.45

  7. #7
    albenessereblog non è connesso Utente attivo
    Data registrazione
    29-12-2021
    Messaggi
    326

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Se aggiungi multiline m alla tua RegExp prima del flag insensitive i ottieni il risultato atteso?
    Se intendi così, no.

    Codice:
    pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)', 'mig'),
    Ottengo più parole trovate se metto l'asterisco dopo la parentesi chiusa, ma non le trova tutte.

    Codice:
    pattern = new RegExp('(>[^<.]*)*(' + what + ')([^<.]*)*', 'ig'),
    Ultima modifica di albenessereblog : 06-02-2023 alle ore 00.43.04

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

    Predefinito

    Penso devi usare
    Codice:
    pattern = new RegExp('(>[^<.]*)(*' + what + '*)([^<.]*)', 'ig'),
    e poi filtrare i probabili spazi bianchi altrimenti non è la stringa cercata.
    Ultima modifica di darbula : 06-02-2023 alle ore 01.12.46 Motivo: Rimosso * finale

  9. #9
    albenessereblog non è connesso Utente attivo
    Data registrazione
    29-12-2021
    Messaggi
    326

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Penso devi usare
    Codice:
    pattern = new RegExp('(>[^<.]*)(*' + what + '*)([^<.]*)*', 'ig'),
    e poi filtrare i probabili spazi bianchi altrimenti non è la stringa cercata.
    Così non trova niente del tutto.

Regole di scrittura

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