Hi,
wie muss ich ndas machen, um für die Häkchen eine Backreferenz zu nutzen?
String: module.php(22): require_once( DIRECTORY_PATH . 'design.inc.php' );
module.php(22): require_once( DIRECTORY_PATH . "design.inc.php" );$pattern = '~^(.*.php)(\d+)(?:.*?)'"['"]~i';
die beiden unterstrichenen Stellen würde ich gerne durch Referenz und Backreferenz ersetzen.
Leider bekomme ich es nicht hin.Versuche:
$pattern = '~^(.*.php)(\d+)(?:.*?)('|")(.*?)\3~i';
$pattern = '~^(.*.php)(\d+)(?:.*?)(['"])(.*?)\3~i';
Schau dir Treffer-Array, das preg_match dir liefert, mittels var_dump an.
Dann siehst du, dass bei
~^(.*.php)(\d+)(?:.*?)('|")(.*?)['"]~i
das Hochkomma bzw. Anführungszeichen als Treffer mit dem Index 2 zurückgeliefert wird:
array(4) {
[0]=>
string(63) "module.php(22): require_once( DIRECTORY_PATH . 'design.inc.php'"
[1]=>
string(10) "module.php"
[2]=>
string(1) "'"
[3]=>
string(14) "design.inc.php"
}
Der erste Eintrag im Array ist keine Back Reference, sondern der Textteil, auf den der komplette Suchausdruck passt.
Für alles, was nach "module.php(22)" bis zum gesuchten Textstück kommt, hast du entweder keine capturing parentheses gesetzt, oder die Erstellung einer Back Reference explizit abgeschaltet.
Also ist die Back Reference, die du später ansprechen willst, um auch dort wieder nach dem ' resp. " zu suchen, die Nummer 2, und nicht Nummer 3.
gesucht werden 'aemodule.php' und 'design.inc.php'
Na da wirst du bezüglich ersterem aber lange suchen können :-)
MfG ChrisB
Light travels faster than sound - that's why most people appear bright until you hear them speak.