Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema preg_replace

  1. #1

    Problema preg_replace

    Salve, ho un array costituito da stringhe del tipo:

    #\b'.$value.'\b#

    dove #\b e \b# sono i delimitatori per preg_replace e value è una variabile (del foreach) che andrà inserita.

    Comunque sia se faccio il preg_replace di due array strutturati in quel modo, ovvero il primo array come scritto prima e il secnodo senza delimitatori è tutto ok, ma vorrei sostituire invece di $value, la stringa "@".$value;

    quindi diventa:

    #\b@'.$value.'\b#

    Ma il problema è che credo legga @ come un simbolo dell' espressione e non di stringa da sostituire, quindi il replace non avviene. Come risolvo?
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    può essere una stupidata la mia
    ma perchè non provi a scrivere cosi

    $value= "@".$value;

    cosi value assume il nuovo valore con la chiocciola prima di tutto
    in questo modo si otterrebbe
    #\b'.$value.'\b#

  3. #3

    Re: Problema preg_replace

    Originariamente inviato da 0-c00l
    Ma il problema è che credo legga @ come un simbolo dell' espressione e non di stringa da sostituire, quindi il replace non avviene. Come risolvo?
    No il problema e' che la @ non e' un carattere che faccia parte di una parola. L'assertion \b matcha nel punto che separa un word character da un non-word character, non essendo @ un word character non c'e' match (a meno che PRIMA della @ non ci sia un word character)

    codice:
    testo @parola testo
         ^
         `-- spazio e @ sono entrambi non word
             quindi \b non da' match
    codice:
    testo@parola testo
        ^
        `-- la 'o' e' un word character, la @ no
            quindi \b in questo caso da' match
    nel tuo caso probabilmente e' sufficiente questo pattern:
    codice:
    "/@$value\b"
    e usiamo queste doppie virgolette invece di infestare il codice di mille concatenazioni di stringa.

  4. #4
    Originariamente inviato da amphioxus
    può essere una stupidata la mia
    ma perchè non provi a scrivere cosi

    $value= "@".$value;

    cosi value assume il nuovo valore con la chiocciola prima di tutto
    in questo modo si otterrebbe
    #\b'.$value.'\b#
    Confermo che lo e'

  5. #5
    K.B. così mi da questo errore:

    Warning [2] preg_replace() [function.preg-replace]: No ending delimiter '/' found - Line: 39 - File: C:\WebSites\beateaters.it_pqlwd6posdcnlnly\Upload\ inc\functions_tag.php PHP 5.2.6 (WINNT)
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

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.