Problem mit RegEx-Syntax

Hallo Leute,

ich habe hier mal eine Frage zum korrektem Syntax. Hier das Skript:

$FileContentConfig = "dtparam=i2c_arm=on";

$Pattern = "/^(device_tree_param|dtparam)=([^,]*,)*i2c(_arm)?(=(on|true|yes|1))?(,.*)?$/";
			if (preg_match($Pattern, $FileContentConfig)) {
				echo "I²C ist aktiviert";
			} else {
			   	echo "I²C ist nicht aktiviert!";
			}

So sagt preg_match „Treffer“, wenn ich aber nur ein Leerzeichen davor oder dahinter mache das sagt preg_match schon „kein Treffer“.
Was muss ich im RegEx-String erweitern, dass der gesuchte String auch aus einem längeren Text korrekt identifiziert wird?

Joachim

Du musst deinen regulären Ausdruck einfach nur anpassen und zulassen, dass vor dem eigentlichen Ausdruck noch weitere Zeichen erlaubt sind.

Möchtest du vor oder nach dem Ausdruck noch Leerzeichen erlauben, dann füge vor und nach dem Ausdruck einfach (\s*) hinzu, also

$Pattern = "/(\s*)(device_tree_param|dtparam)=([^,]*,)*i2c(_arm)?(=(on|true|yes|1))?(,.*)?(\s*)$/";

Wenn dir die umliegenden Zeichen egal sind und lediglich irgendwo im String der Ausdruck vorkommen soll, nimmst du . anstatt \s und kommst zu

$Pattern = "/(.*)(device_tree_param|dtparam)=([^,]*,)*i2c(_arm)?(=(on|true|yes|1))?(,.*)?(.*)$/";

Das führende ^ habe ich in den Beispielen übrigens rausgenommen, das braucht man hier nicht, schadet aber auch nicht.

Super, wieder etwas gelernt - vielen Dank!

Joachim