2016-08-17 1 views
-3

J'ai un projet avec beaucoup array() clés sans les guillemetstableau php() sans les guillemets

$ary = array(name => "Smith"); 

Une manière de convertir sa clé en citant?

$ary = array('name' => "Smith"); 

Je sais codes comme

$ary[name] = "Smith" ; // can change to $ary['name'] using editor with regexp 

Mais le problème s'il est codé de cette façon

$ary = array(name => "Smith"); 

// or worse 

$ary = array(
    name => "Smith", 
    class => "2A" 
); 

Comment utiliser pour ajouter regexp citation à la clé de tableau?

Ce projet a des milliers de fichiers php. Tout le monde avait l'expérience de cela et que recommandez-vous pour rechercher et remplacer tous les fichiers php. Je vous remercie.

+1

Afficher un fragment réel de ce code (clés sans guillemets) – RomanPerekhrest

+4

Copie possible de [Comment corriger les clés de tableau associatif sans guillemets simples dans plusieurs fichiers] (http://stackoverflow.com/questions/14891464/how- to-fix-associative-array-keys-that-lack-guillemets-simples-in-multiple-f) – vascowhite

+0

Comment avez-vous eu des milliers de fichiers invalides pour commencer?!? –

Répondre

0

Vous aurez besoin de deux regexp passe avec recherche/remplacement

Le premier qui remplace $ary[name] = "Smith" est cotée here.

Match: (\$[a-zA-Z0-9]+\[)([^\]]+)\]

Remplacer: \1'\2']

https://regex101.com/r/aJ3cN9/1

La deuxième cible le cas name => "Smith":

Match: ([a-zA-Z0-9]+)\s*=>

Remplacer: '\1' =>

https://regex101.com/r/wH9cC5/1

Masser remplacer cela, vous pouvez utiliser vim comme described here, tout IDE PHP mature comme NuSphere ou PhpStorm ou de nombreux éditeurs de texte (Notepad ++ ou Sublime Text) - il suffit de cocher la menu "Recherche" en eux. Assurez-vous que les fichiers que vous modifiez sont sous le contrôle de version afin que vous puissiez annuler toutes les modifications que vous ne voulez pas.

De même, si les touches peuvent comporter des traits de soulignement, utilisez [a-zA-Z0-9_] au lieu de [a-zA-Z0-9] dans les deux expressions rationnelles.