2016-11-17 9 views
0

WordPressサイトに対して実行する必要があるコード行がありますが、多くの「不正な」文字が含まれています。私はスマートな引用符をキャッチすることができますが、いくつかの深刻な - 永久的なダメージを行う恐れのためにそれを実行することを躊躇!スマート引用符と他の非コード文字を削除する

function maybe_unserialize($original) { 
    if (is_serialized($original)) // don’t attempt to unserialize data that wasn’t serialized going in 
    { 
     $original = preg_replace(‘!s:(\d+):”(.*?)”;!se’, “‘s:’.strlen(‘$2′).’:\”$2\”;'”, $original); 
     return @unserialize($original); 
    } 
    return $original; 
} 

特に、私は4行で約'を知りません。

どこかでこれらの文字を取り除いて置き換えることができますか?

+0

実際に理解していない*サードパーティのコードをコピー貼り付けたようです。これを行うべきではありませんが、問題を解決する最善の方法は、第三者に戻って、フロントエンドフォーマットを使わずにコードをもう一度入手することです。 –

答えて

0

UNIX系のシステムを使用している場合は、sedコマンドを使用することをお勧めします。

$PROJECT_DIR 
└── A 
    ├── 1.php 
    └── B 
     └── 2.php 

その後、次のコマンドを実行できます:プロジェクトのルートが$PROJECT_DIRであり、ファイルシステムのレイアウトがあるとし

find "$PROJECT_DIR" -type f -name '*.php' -exec sed -i.backup \ 
    -e "s/‘/'/g; s/”/\"/g; s/“/\"/g; s/’/'/g; s/′/'/g" {} \+ 

コマンドは、単一のASCIIと「スマート」引用符を置き換えます二重引用符をインプレースで使用します。

$PROJECT_DIR 
└── A 
    ├── 1.php 
    ├── 1.php.backup 
    └── B 
     ├── 2.php 
     └── 2.php.backup 

次にあなたがfindコマンドで変更をロールバックすることができます:

find "$PROJECT_DIR" -type f -name '*.php.backup' \ 
    -exec bash -c 'mv -f "$0" "${0%.backup}"' {} \; 

、次のコマンドは、ツリー内のすべての*.phpのファイルのPHP構文を検証し、古いファイルが.backupプレフィックスで保存されます:

find "$PROJECT_DIR" -type f -name '*.php' -exec php -l {} \; 

サンプル出力

No syntax errors detected in ./A/1.php 
No syntax errors detected in ./A/B/2.php 
関連する問題