Sie können
preg_match('~^[a-z]{2}39\.[a-z]{4} \(([\d.]+)~m', $myfile_contents, $matches);
print_r($matches[1]);
Siehe regex demo
Ich habe eine \(
eine wörtliche (
anzupassen und verwendet, um eine Erfassungsgruppe um [\d.]+
(1 oder mehr Stellen oder Punkte), das entspricht der IP, die unter Verwendung von [1]
Index in $matches
abgerufen werden kann. Die ermöglicht einen mehrzeiligen Modus, so dass ^
den Anfang einer Zeile, nicht nur den Beginn der Zeichenfolge übereinstimmen konnte.
UPDATE
Wenn Sie in eine dynamische regex mit einer Zeichenkette erstellen benötigen, können Sie über die Verwendung von preg_quote
denken sollte:
$myfile = file('file.txt');
$search = "pc39.home"; // <= a literal string, no pattern
foreach ($myfile as $lineContent)
{
$lines=preg_match('/' . preg_quote($search, "/") . ' \(([\d.]+)\)/', $lineContent, $out);
echo($out[1]);
}
Sie müssen auch eine einzelne wörtliche zitiert in ' \(([\d.]+)\)/'
seit die \
muss Literal sein \
Symbole (ja, PHP löst \
als Literal \
mit nicht vorhandenen Escape-Sequenzen, aber warum in PHP?).
Danke für Ihre Antwort –