Çoklu hatlar arasında arama yapmak için PHP regex

3 Cevap php

Ben desen <!-- %{data=THIS GETS MATCHED}% --> aramak ve eşleşen metni çekin PHP preg_ * kullanıyorum.

Bunun için desen:

preg_match('#<!-- %{' . $knownString . '\s*=\s*(.*?)}% -->#', ...)

Ne ben yapmak istiyorum dize için birden çok hatları üzerinden bir arama motorudur. Örneğin:

<!-- %{data=
THIS GETS
MATCHED AND
RETURNED
}% -->

Bunu nasıl arama yeteneğine sahip benim geçerli desen düzenleyebilirsiniz?

3 Cevap

Eğer nokta, herhangi bir karakter except Yenisatır için maçları olmadan, "s" pattern modifier eklemek gerekir:

preg_match('#<!-- %{' . $knownString . '\s*=\s*(.*?)}% -->#s', ...)

preg_match('#<!-- %{' . $knownString . '\s*=\s*(.*?)}% -->#s', ...) çalışır mı?

Ben bunu test edemez bu yüzden ben burada iş atm PHP yok ...

Bu iş gibi görünüyor:

<?php
    $testString = "<!-- %{data=
THIS GETS
MATCHED AND
RETURNED
}% -->";
    $knownString = "data";
    preg_match( "@<!-- %\\{" . $knownString . "\\s*=\\s*([^\\}]+)\\}% -->@", $testString, $match );
    var_dump( $match );
?>

Döndürdü:

array(2) {
  [0]=>
  string(54) "<!-- %{data=
THIS GETS
MATCHED AND
RETURNED
}% -->"
  [1]=>
  string(34) "THIS GETS
MATCHED AND
RETURNED
"
}