Visualizzazione risultati 1 fino 4 di 4

Discussione: Sostituzione di un testo con espressione regolare ricorsivamente in tutti i file

  1. #1
    Guest

    Lightbulb Sostituzione di un testo con espressione regolare ricorsivamente in tutti i file

    Ciao a tutti,
    vi pongo questo problema: eseguire una sostituzione di un testo con espressione regolare ricorsivamente in tutti i file.

    Qualcuno di voi ha già per caso creato o provato uno script o un'applicazione in PHP in grado di fare questo?

    Grazie

    PS: quì ci sono alcuni riferimenti da leggere appena avete tempo:
    http://www.php.net/manual/en/function.scandir.php
    http://www.php.net/manual/en/function.fread.php
    http://php.net/manual/en/function.preg-replace.php
    http://www.php.net/manual/en/function.fwrite.php

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,249

    Predefinito

    Può esserti utile questo.

    Inoltre, è più immediato usare le file_put_contents() e file_get_contents() invece della fopen() e le varie fread, fwrite...

    Se si trova tutto in una cartella, puoi inizializzare $files con la glob (o altre), e fare una cosa del tipo:

    Codice PHP:
    $files = array('file1.php','file2.txt',...);
    foreach(
    $files as $file)
    {
    $contenuto = file_get_contents($file);
    $contenuto = preg_replace('/pattern/', 'replacement', $contenuto);
    file_put_contents($file,$contenuto);
    }
    Ciao!
    Ultima modifica di alemoppo : 26-11-2012 alle ore 00.48.03

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

    Predefinito

    Di solito uso sed, quindi non mi sono mai preoccupato di farlo in php.

    Ma se dovessi, non userei le funzioni sopra ma glob, file_get_contents e file_put_contents, con le quali diventa triviale. Occhio a settare le espressioni regolari come multi-linea —oppure usa file.

  4. #4
    Guest

    Predefinito

    Ho trovato un lavoro completo Regular Expression Replace in All Files and Subdirs

    http://charlesleifer.com/blog/regula...s-and-subdirs/

    Codice PHP:
    <?php
    function recursiveFileReplace ($directory, $search, $replace, $valid_ext = '') {
    // directory is the starting point of the search
    // search is a regular expression
    // replace is the replacement string

    // example: replace <? with <?php
    // recursiveFileReplace('/path-to-files/', '|<\?\s+|', '<?php ', array('php'));
    if (substr($directory, -1, 1) == '/') {
    $directory = substr($directory, 0, strlen($directory) - 1);
    }

    // recursively scan directory and retrieve files
    if ($handle = opendir($directory)) {
    while (
    false !== ($file = readdir($handle))) {
    if (
    $file != '..' && $file != '.') {
    if (
    is_file($directory. '/' .$file)) {
    if (
    is_array($valid_ext)) {
    $file_ext = strtolower(substr($file, strrpos($file, '.') + 1));
    if (!
    in_array($file_ext, $valid_ext)) {
    continue;
    }
    }
    $contents = file_get_contents($directory. '/' .$file);
    $contents = preg_replace($search, $replace, $contents);
    file_put_contents($directory. '/' .$file, $contents);
    }
    if (
    is_dir($directory. '/' .$file)) {
    recursiveFileReplace($directory. '/' .$file, $search, $replace, $valid_ext);
    }
    }
    }
    return
    true;
    }
    }
    ?>

Tags for this Thread

Regole di scrittura

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