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

    Problema preg_match_all

    Allora devo fare un controllo su un array con molti elementi e di ogni elemento devo solo prendere le parole contenute fra {}

    ecco quello che ho fatto:

    Codice PHP:
    $pattern '/.*\{([^,]+)\}.*/is';
    preg_match_all($pattern$temp2[0],$asd);
    var_dump($asd);

    Ecco il risultato:

    array(
    2) {
      [
    0]=>
      array(
    1) {
        [
    0]=>
        
    string(93"{Vacanze}, {Bed and Breakfast}, {Bed & Breakfast} {in [zona]} {Alberghi} {e Offerte} {[zona]}"
      
    }
      [
    1]=>
      array(
    1) {
        [
    0]=>
        
    string(6"[zona]"
      
    }

    Io vorrei che mi restituisca nell'array: {Vacanze} {Bed and Breakfast} {Bed & Breakfast} {in [zona]} {Alberghi} {e Offerte} {[zona]}
    Facendo un paio di refresh ho notato che mi prende solo l'ultima parola fra {} e non capisco come mai!

    Non sono molto ferrato sulle regex

  2. #2
    Credo ti basti una cosa del genere
    codice:
    $pattern = '/\{(.+?)\}/s' ;
    Ti prende solo l'ultimo perchè hai messo ".*" all'inizio e alla fine.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    se sono parole alleggerirei la regexp in questo modo

    '/{([^}]+)}/'


    te lo dico perchè se le parole sono molte e l'array ha tanti indici una preg_match_all in un ciclo per ogni chiave o per un array_map che sia potrebbe essere veramente pesante e di fatto la regexp non richiede l'uso di punti, "delimitatori di ingordigia" o altro
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    funzionano tutti e due i pattern ma preferisco quello di andrea proprio per il motivo che ha detto =) ty so much for all guys ^^

  5. #5
    Originariamente inviato da andr3a
    se sono parole alleggerirei la regexp in questo modo

    '/{([^}]+)}/'


    te lo dico perchè se le parole sono molte e l'array ha tanti indici una preg_match_all in un ciclo per ogni chiave o per un array_map che sia potrebbe essere veramente pesante e di fatto la regexp non richiede l'uso di punti, "delimitatori di ingordigia" o altro
    Hai ragione, ho la brutta abitudine di mettere il punto anche quando effetivamente non sarebbe necessario, questione di pigrizia
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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.