Cerca condicionada a VI

cerca condicionadaAnem a fer servir una cosa que dic cerca condicionada a VI: buscar un text que vagi o no seguit d’un altre. A l’editor de text VI podem fer servir expressions regulars per buscar patrons en el text. Això és de molta ajuda.

Des de fa temps les etiquetes per assenyalar l’inici del codi php “& lt;?” no s’accepten. Això es fa per evitar que es confongui amb la de processament de declaracions XML:

<?xml version="1.0" encoding="utf-8" ?>

Per això cal fer servir l’etiqueta “<?php” i així no hi ha problema. Segueixen servint les etiquetes “<?=”. Per inserir variables directament:

...
<P><?=$variable?></P>
...

Cerca condicionada i substitució automàtica en VI

Cercar i substituir text en vaig veure és molt fàcil i podeu trobar aquí una paqueña explicació.

Per a cercar i substituir aquestes etiquetes automàticament es pot fer servir la següent instrucció:

:%s/<?\(php\|=\)\@!/<?php /g

Això el que fa és buscar en tot el fitxer (“%”) les aparicions del text “<?” que no vagin seguides (“@!”) de “php” o “=” i les substitueix (la s del principi) per “<?php” (el que va darrere de la segona “/” és el que va a substituir al que trobat). Al final (darrere de la tercera “/”) ve una “g” perquè la substitució es faci globalment, per si hi ha més d’una aparició per línia, també es pot posar una “i” per indicar que no es diferenciï majúscules de minúscules, quedaria:

:%s/<?\(php\|=\)\@!/<?php /gi

Hi ha barres invertides “\” en alguns llocs. Aixó es per diferenciar aquests caràcters especials dels que ha de considerar com a texte a buscar. Els parèntesis, per exemple, que són per agrupar les opcions.

He afegit l’espai després del PHP per si hi ha alguna línia que tingui codi després de <?php perquè no quedi enganxat i doni un error (“<?phpecho”, per exemple).

La sintaxi de \ @! és una mica confusa perquè va després del patró que no ha de trobar.

Pot ser útil per a utilitzar l’expressió en algun programa de recerca de texte pero no se si funcionarà correctament (sed, per exemple).

En principi no sembla una mica complicat però, perquè es faci automàtic, cal tenir en compte que no s’han de substituir totes les aparicions de l’etiqueta curta, sinó les que compleixen unes condicions, per això el nom de cerca condicionada.