Html arasındaki her şeyi Eşleştirme

3 Cevap php

Ben bir değişken denir $ içeriğinde aşağıdaki döndüren bir komut dosyası var

<body>
<p><span class=\"c-sc\">dgdfgdf</span></p>
</body>

Ancak karşılaşmalar adında bir dizinin içindeki gövde etiketi arasındaki her şeyi yerleştirmeniz gerekir

Ben gövde etiketi arasındaki şeyler maç için aşağıdakileri yapın

preg_match('/<body>(.*)<\/body>/',$content,$matches);

ama $ dizi nasıl bu gövde etiketi içindeki her şeyi geri alabilir, boş eşleşmeler

3 Cevap

HTML ayrıştırmak için normal ifadeler kullanmak gerekir.

Bu durumda, belirli sorun nokta satırsonlarını eşleşecek şekilde DOTALL modifier eklemeniz gerekir olduğunu.

preg_match('/<body>(.*)<\/body>/s', $content, $matches);

Ama cidden, bunun yerine bir HTML çözümleyici kullanabilirsiniz. Yukarıdaki düzenli ifade kırmak pek çok yolu vardır.

Don't try to process html with regular expressions! PHP's builtin parser yerine kullanın:

$dom = new DOMDocument;
$dom->loadHTML($string);
$bodies = $dom->getElementsByTagName('body');
assert($bodies->length === 1);
$body = $bodies->item(0);
for ($i = 0; $i < $body->children->length; $i++) {
    $body->remove($body->children->item($i));
}
$string = $dom->saveHTML();

Nedense sen DOMDocument yüklü değilse, bu deneyin

1. Aşama. İndir simple_html_dom

Adım 2. Nasıl use its selectors hakkında belgeleri okuyun

require_once("simple_html_dom.php");
$doc = new simple_html_dom();
$doc->load($someHtmlString);
$body = $doc->find("body")->innertext;