Visualizzazione risultati 1 fino 7 di 7

Discussione: [php] preg_match() e preg_split()

  1. #1
    Guest

    Predefinito [php] preg_match() e preg_split()

    Ciao a tutti, oggi mi è sorto un problema.

    Come sapete ci sono utenti che hanno il vizio di scrivere 30 mila punti esclamativi nei messaggi, oppure 50 puntini.

    Ora, volevo risolvere questo problema e ci sono riuscito a metà.

    ho questo problema:

    Se un utente scrive per esempio ciao!!!!!!! viene sostituito con ciao!

    Se un utente scrive per esempio come va??????? viene sostituito con come va?

    Se un utente scrive ciao......... viene sostituito con ciao.

    Ora, dovrei fare in modo che se un utente voglia scrivere tre puntini (così: ciao... ) non vengano rimpiazzati da quello singolo.

    Ho questo codice ma non ne cavo piede

    Codice PHP:
    // Exclamation point in message
    if (preg_match("/([\!\?\.])+/", $message))
    {
    $message_array = preg_split("/\n/", $message);

    for (
    $x = 0; $x < count($message_array); $x++)
    {
    if (!
    preg_match("/\[.*\//", $message_array[$x])) // Ignore BBCode...
    {
    $message_array[$x] = preg_replace("/([\.])+/", "\...", $message_array[$x]);
    }
    $message = implode("\n", $message_array);
    }

    for (
    $x = 0; $x < count($message_array); $x++)
    {
    if (!
    preg_match("/\[.*\//", $message_array[$x])) // Ignore BBCode...
    {
    $message_array[$x] = preg_replace("/([\!])+/", "\\1", $message_array[$x]);
    $message_array[$x] = preg_replace("/([\?])+/", "\\1", $message_array[$x]);
    }
    $message = implode("\n", $message_array);
    }
    }
    In poche parole, se i punti sono meno o 3 gli lascia, mentre se sono più di 3 gli diminuisce a 3.

    Spero in un vostro aiuto, grazie anticipatamente

  2. #2
    Guest

    Predefinito

    Dovrebbe essere:

    $message_array[$x] = preg_replace("/([\.]){4,}/", "\...", $message_array[$x]);


    Ciao!

  3. #3
    Guest

    Predefinito

    ad occhio è sbagliata la regex del primo preg_replace:
    Codice PHP:
    $message_array[$x] = preg_replace("/([\.]{4,})/", "...", $message_array[$x]);
    Ultima modifica di Inverno : 22-12-2008 alle ore 14.54.39 Motivo: mannagia Debug mi precede sempre ...

  4. #4
    Guest

    Predefinito

    mmm no, al posto di 2, dev'esserci 4, altrimenti sostituisce anche due e tre puntini consecutivi.


    Ciao!

  5. #5
    Guest

    Predefinito

    sisi, nella fretta ho scritto errato (infatti ho corretto subito)
    avevo pensato una cosa e scritto un'altra... sarà l'influenza ;P

  6. #6
    Guest

    Predefinito

    PS: quando qualcuno ti anticipa, e la tua risposta è praticamente la stessa, cancella il tuo post!


    Ciao!

  7. #7
    Guest

    Predefinito

    Perfetto, funziona sostituendo

    Codice PHP:
    $message_array[$x] = preg_replace("/([\.])+/", "\...", $message_array[$x]);
    con

    Codice PHP:
    $message_array[$x] = preg_replace("/([\.]){4,}/", "\...", $message_array[$x]);


    Grazie per la tempestività della risposta

Regole di scrittura

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