Kann ich RegEx und VI (oder etwas Ähnliches) verwenden, um einen Text für mich automatisch zu füllen?


6

HINWEIS: Ich bin nicht auf die Verwendung von VI eingestellt, es ist nur das erste, was mir in den Sinn kam, dass ich vielleicht tun könnte, was ich brauche. Fühlen Sie sich frei, irgendein anderes Programm vorzuschlagen.

Ich habe ein Formular mit fast 100 Feldern, die ich automatisch mit PHP füllen möchte. Ich weiß, wie man die Autofill erledigt, aber ich möchte vermeiden, den benötigten Text manuell zu 100 Feldern hinzuzufügen.

Gibt es eine automatisierte Art und Weise ich den Text annehmen kann:

<input name="riskRating" id="riskRating" type="text" /> 

und ändern Sie es zu:

<input name="riskRating" id="riskRating" type="text" value="<?php echo $data['riskRating']; ?>" /> 

Denken Sie daran, dass ich dies wollen fast 100 Felder zu tun. Ich versuche zu vermeiden, zu jedem Feld zu gehen, den PHP-Code einzufügen und den Variablennamen manuell zu ändern.

Ich hoffe, dass irgendein VI-Guru da draußen die Spitze seines/ihres Kopfes kennt.

5

nehmen einige Ideen von Zsolt Botykai und Mark Biek:

:%s:<input\(.* id="\([^"]*\)".*\) />:<input \1 value="<?php echo $data['\2']; ?> />:g 
  0

Vielen Dank für die Antworten. Ihr habt mir viel Ärger erspart. 23 sep. 082008-09-23 20:40:22


4

:%s:\(<input name="\([^"]\+\)" id="[^"]\+" type="text" \)/>:\1value="<?php echo $data ['\2']; ?>" />:gci

Das ist eine Zeile. HTH.

  0

Ich sehe nicht, wie das für mehr als nur den spezifischen Fall von "riskRating" funktioniert 23 sep. 082008-09-23 19:55:36

  0

Oh, dann wurde das Problem nicht genau angegeben. Aktualisierung der Antwort 23 sep. 082008-09-23 19:57:24

  0

"Denken Sie daran, dass ich dies zu fast 100 Feldern machen will. Ich versuche zu vermeiden, zu jedem Feld zu gehen, den PHP-Code einzufügen und den Variablennamen manuell zu ändern." 23 sep. 082008-09-23 19:58:50

  0

Überprüfen Sie mein Update. Ich bin kein PHP-Programmierer. Und Sie hatten die erwartete Ausgabe geschrieben, und nicht erwähnt, dass es eine "Variable" - Unterausdruck verwendet, um regexp spezifisch zu sein - von der ursprünglichen Zeichenfolge. 23 sep. 082008-09-23 20:08:09


2

Ich habe es so. Ich bin mir nicht sicher, wie ich ihm entkommen kann, um in vim zu arbeiten. Ich werde bearbeiten, wenn ich es herausfinden kann

Dies ist die Suche Teil der Regex ist:

<input (.*) id="(.*?)" (.*) /> 

Dies ist der Ersatz Teil:

<input \1 id="\2" \3 value="<?php echo $data['\2']; ?>" /> 
  0

Das ist besser als meins. :% s: <Eingabe \ (. * \) ID = "\ ([^"] * \) "\ (. * \) />: <Eingabe \ 1 ID =" \ 2 "\ 3 Wert =" < ? php echo $ data ['\ 2']; ?> "/>: g 23 sep. 082008-09-23 20:06:22

  0

Danke für die Antworten. Ihr habt mir viel Ärger erspart. 23 sep. 082008-09-23 20:39:50


-1

Schritt 1: chaine Typ suchen = "text":

/type="text" 

Überprüfen Sie, ob alle gewünschten Zeichenfolgen abgefangen werden. Schritt 2: Subsitute mit dem gesuchten string:

:%s//type="text" value="<?php echo $data riskrating]; ?>"/g 

Schritt 3: Seien Sie glücklich!