Wie kann ich in mehreren Datein den gleichen Code durch einen anderen ersetzen?

del_nielo

Mitglied
Hallo,
Ich habe ein Ordner mit mehreren PHP Datein, alle PHP Datein haben die gleichen Zeilen in Zeile 1-4, nun würde ich die Zeile 1-4 gerne durch einen besseren Code ersetzen! Gibt es Programme, die alle PHP Datein in dem Ordner durch gehen würden, und den Code ersetzen würden durch den neuen?
Wenn ja, welche Programm kann sowas, und wie?
Gruß
 
Sowas lässt sich doch ganz einfach selber schreiben:

PHP:
<?php

define('CRLF', "\r\n");

$newLines = array(
	'<?php'.CRLF,
	'/*'.CRLF,
	' * Neuer Header'.CRLF,
	' */'.CRLF
);

$dir = dir('.');

// Durchlaufe alle Dateien im Verzeichnis
while (($file = $dir->read()) != false) {
	// Handelt es sich um eine Datei mit der Endung PHP?
	if (is_file($file) && preg_match('/\.php$/i', $file)) {
		if ($file == basename(__FILE__)) {
			// Diese Datei hier nicht verarbeiten
			continue;
		}
		// Datei auslesen
		$fileContents = file($file);
		// Anfang ersetzen
		array_splice($fileContents, 0, count($newLines), $newLines);
		// Datei mit neuem Anfang schreiben
		$fp = fopen($file, 'w');
		fwrite($fp, implode('', $fileContents));
		fclose($fp);
	}
}

?>

Welchen Code willst du denn ersetzen? Wäre es vielleicht nicht besser, diesen Code in eine Funktion auszulagern? Dann könnte man sich solche Aktionen sparen.
 
Viele Editoren, können über "Suchen & ersetzen" auch in mehreren Dateien Veränderungen durchführen. So zum Beispiel auch jEdit, den ich als Allzweckwaffe für viele Coding-Aktionen verwende.

Gruß hpvw
 
Ich sehe grade das der Code manchmal in einer anderen Zeile ist, wie mache ich das denn?

zB.
Code:
<table cellspacing="0" cellpadding="0" border="0" width="760">
<tr>
    <td width="130"><img src="../images/logo.gif" width="130" height="78" border="0" alt=""></td>
    <td width="630" background="../images/bglogo.gif" align="right" valign="top" class="weissklein">
		<img src="../images/pix1.gif" width="1" height="1" border="0" alt=""><bR><img src="<? echo $domain ?>/banner/banner.jpg" border="0" alt="">&nbsp;<br>
		<img src="../images/pix1.gif" width="1" height="2" border="0" alt=""><bR>

Der ist überall wo anders, und sollte nun überall in den Datein in den Code umgeschrieben werden:
Beispiel:
Code:
<table cellspacing="1" cellpadding="0" border="0" width="760" bgcolor="white" style="border: 1px solid black">
<tr>
    <td width="130" bgcolor="#7BB5DE" valign="top">
	<!-- MENU -->
		<img src="../images/bild.jpg" width="130" height="86" border="0" alt=""><br>
		<table cellspacing="0" cellpadding="0" border="0" width="100%" height="1">
		<tr>
		    <td bgcolor="white"><img src="../images/pix1.gif" width="1" height="1" border="0" alt=""></td>
		</tr>

Wie würde ich dieses nun machen? (bitte ein Beispiel)
Ich mache dieses nur einmal, darum bräuchte ich nichts extra aufbauen, was es vereinfachen würde, weil das wäre ein zu großer Aufwand, weil die funktionen für alles dann noch extra angepasst werden müßten!
Gruß
 
Wenn du ein php script schreiben willst dann schau dir mal die Funktion preg_replace an ist zwar eigentlich für reguläre Ausdrücke aber die lässt sich für so etwas missbrauchen. Der kannste halt nen ganzen String übergeben und nen 2. String der den nach dem gesucht wird ersetzen soll.

Gruß Steff
 
Meinst du jetzt in dem dem Programm nach preg_replace suchen (Unter Search - Find&Replace)? Weil dort kann man nur eine Zeile ersetzen! Aber ich will ja mehrere Zeilen auf einmal Umschreiben, weil es kann ja auch mal sein, das eine Zeile öfters ist!
Oder wie meinst du das jetzt?
 
EIn Zeilenumbruch kann, wie in PHP auch, durch \n, \r bzw. \n\r dargestellt werden, wenn Du mit regulären Ausdrücken suchst.

Gruß hpvw
 
Also dann in die Suchleiste das eingeben?

Normaler Code:
Code:
			<strong>Du hast <font color="#FF0000"><? echo $nachr ?></font> neue Nachrichten in deinem Posteingang.</strong>
			<br><img src="../images/pix1.gif" width="1" height="3" border="0" alt=""><br>

Code mit dem \n\r
Code:
<strong>Du hast <font color="#FF0000"><? echo $nachr ?></font> neue Nachrichten in deinem Posteingang.</strong> \n\r <br><img src="../images/pix1.gif" width="1" height="3" border="0" alt=""><br>

Oder wie meinst das?
 
Im Prinzip ja, allerdings sind auch die Tabs oder Leerzeichen bei Deinem Beispiel-String zu berücksichtigen:
Code:
(\t|\ )*Zeile 1(\t|\ )*(\n\r|\n|\r){1}(\t|\ )*Zeile 2
Ich bin mir gerade nicht sicher, ob man im Ausdruck Leerzeichen escapen muss oder nicht.

Machst Du den Versuch mit jEdit? Dann markiere "Regular Expressions", öffne alle Dateien, in denen Du etwas ändern willst und markiere "All Buffers".

Gruß hpvw

EDIT: Vorsichtshalber solltest Du nicht beim ersten Versuch auf "Replace All" klicken.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück