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

    array contenente tutti i delimiter di uno splittaggio... O_O

    Lo so dal titolo sembra assurdo...provo a spiegarmi meglio

    codice:
    array split  ( string $pattern  , string $string  [, int $limit  ] )
    
    Splits a string  into array by regular expression.
    supponendo che io abbia la stringa

    Codice PHP:
    $stringa="prova1{id}provatest{nome}";
    $arr=split('{*}',$stringa);

    print_r($arr); 
    codice:
    OUTPUT:
    Array (
      [0]=>prova1
      [1]=>provatest
    )
    e se quello che volessi io, fossero "tutte le volte che appare la pattern"?....quindi un array di questo tipo

    codice:
    OUTPUT:
    Array (
      [0]=>{id}
      [1]=>{nome}
    )
    ovviamente dalla stessa stringa $stringa

    penso ci sia una funzione di php che mi permetta di farlo...ma non la trovo su php.net...

    si accettano altri suggerimenti :S

  2. #2

  3. #3
    grazie mille del suggerimento...ero certo che ci fosse una funzione per farlo ma proprio non la trovavo (effettivamente preg_match_all non è un nome molto intuitivo :P )

    questa funzione fa proprio al caso mio

  4. #4
    sto avendo un problema con quest'espressione regolare...

    Codice PHP:
    $stringa="ma che{id} figata sto {nome} coso rotoloso {cognome}lol mia";
    preg_match_all("{*}",$stringa,$arr,PREG_SET_ORDER);
    print_r($arr); 
    mi scrive

    codice:
    Warning: preg_match_all() [function.preg-match-all]: Compilation failed: nothing to repeat at offset 0 in C:\Programmi\EasyPHP 2.0b1\www\GM\index.php on line 45
    non capisco dove sia l'errore...

  5. #5
    L'espressione regolare utilizzata non e' corretta.

    Codice PHP:
    <pre>
    <?php 
    $content 
    'ma che{id} figata sto {nome} coso rotoloso {cognome}lol mia';
    preg_match_all('#\\{[^\\}]*\\}#'$content$matches);
    print_r($matches);
    ?>
    </pre>

  6. #6
    Originariamente inviato da Fire-Dragon-DoL
    sto avendo un problema con quest'espressione regolare...

    Codice PHP:
    $stringa="ma che{id} figata sto {nome} coso rotoloso {cognome}lol mia";
    preg_match_all("{*}",$stringa,$arr,PREG_SET_ORDER);
    print_r($arr); 
    mi scrive

    codice:
    Warning: preg_match_all() [function.preg-match-all]: Compilation failed: nothing to repeat at offset 0 in C:\Programmi\EasyPHP 2.0b1\www\GM\index.php on line 45
    non capisco dove sia l'errore...
    mhhh...con la tua funziona ma non mi spiego il perchè: * non vuole dire tutto? e io gli ho detto "prendi tutto tra le parentesi"...boh

  7. #7
    La tua espressione regolare non contiene i necessari delimitatori di inizio/fine.
    {} sono meta caratteri, non li puoi utilizzare come caratteri senza l'escaping.
    * significa prendi "0 or more quantifier" rispetto all'elemento (carattere, classe di caratteri, etc) precedente.

    Per capire come funzionano le espressioni regolari, ti suggerisco di leggere il manuale ufficiale:

    http://www.php.net/manual/it/referen...ern.syntax.php

  8. #8
    Originariamente inviato da filippo.toso
    La tua espressione regolare non contiene i necessari delimitatori di inizio/fine.
    {} sono meta caratteri, non li puoi utilizzare come caratteri senza l'escaping.
    * significa prendi "0 or more quantifier" rispetto all'elemento (carattere, classe di caratteri, etc) precedente.

    Per capire come funzionano le espressioni regolari, ti suggerisco di leggere il manuale ufficiale:

    http://www.php.net/manual/it/referen...ern.syntax.php
    ah apposto grazie!

    e grazie per il link...il mio manuale di php era un pò scadente sulle espressioni regolari...ecco perchè :P

    studio cosi riempio la lacuna

    perdona il disturbo..grazie di tutte le risposte

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.