Question

regexs me faire pleurer, donc, je suis venu ici pour aider.

Je cherche quelques conseils sur Rechercher et remplacer Coda Panic . Je sais que le F & R est assez avance, mais je suis à la recherche de la meilleure façon de le faire. Je suis en train de réécrire un « moteur de template » (très basique) Je passe une webapp Je codage en PHP (CodeIgniter).

À l'heure actuelle, je vous appelle mon modèle comme ceci:

$this->load->view('subviews/template/headerview');
$this->load->view('subviews/template/menuview');
$this->load->view('subviews/template/sidebar');
$this->load->view('The-View-I-Want-To-Load');   // This is the important line
$this->load->view('subviews/template/footerview');

Cependant, il est inefficace en utilisant cinq lignes de code à chaque fois que je veux charger une autre page, dans tous les différents contrôleur. Donc, je réécrite comme ceci:

$data['view'] = 'The-View-I-Want-To-Load';
$this->load->view('template',$data);

De cette façon, si je dois apporter des changements majeurs à la conception, il peut facilement être fait à partir du fichier de vue template.php (qui contient l'en-tête, menu, vue sur la barre latérale, etc., etc.).

Cependant, j'utilise les 5 lignes précédentes dans tous les sens dans de nombreux différents contrôleurs et fonctions. Donc, ma question est --- Comment puis-je trouver et remplacer l'ancien moteur de template (5 lignes de code) pour la nouvelle un - substituant au nom de la vue dans l'important, unique ligne pour celui de $ data [ 'vue]?

Est-ce que de sens ?! Sinon, je vais essayer de rephrase! Je veux dire, est-il un moyen de le faire via une expression régulière ou quelque chose? Ou suis-je sur complètement les mauvaises lignes ici?

Était-ce utile?

La solution

votre regex ressemblera à quelque chose comme ceci:

\$this->load->view\('subviews/template/headerview'\);\n\$this->load->view\('subviews/template/menuview'\);\n\$this->load->view\('subviews/template/sidebar'\);\n\$this->load->view\('([^']*)'\);\n\$this->load->view\('subviews/template/footerview'\);

et le remplacer par

\$data['view'] = '$1';\n\$this->load->view('template',\$data);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top