HTML etiketlerinin içeriğini kapmak için nasıl?

3 Cevap php

Hey yüzden ne yapmak istediğinizi ilk paragrafın içeriği dolanabilir olduğunu. Dize $blog_post aşağıdaki biçimde paragraflar bir sürü içerir:

<p>Paragraph 1</p><p>Paragraph 2</p><p>Paragraph 3</p>

Ben çalıştırıyorum sorun ben ilk <p> etiketi ve ilk kapanış </p> etiketi arasındaki her şeyi kapmak için bir regex yazıyorum olmasıdır. Bununla birlikte, ilk <p> etiketi ve me her kapma sonuçları last kapatma </p> etiketi kapma.

İşte benim geçerli kod:

if (preg_match("/[\\s]*<p>[\\s]*(?<firstparagraph>[\\s\\S]+)[\\s]*<\\/p>[\\s\\S]*/",$blog_post,$blog_paragraph))
     echo "<p>" . $blog_paragraph["firstparagraph"] . "</p>";
else
     echo $blog_post;

3 Cevap

Peki, sysrqb paragrafta başka hiçbir html yok varsayarak ilk paragrafta şey maç izin verir. Siz isteyebilirsiniz, bu gibi daha fazla şey

<p>.*?</p>

Lütfen * sonra ? yerleştirme sadece </p> eşleştirme önce gerekli olduğu kadar az metin maç olacak yani, bu non-açgözlü yapar.

Eğer kullanırsanız preg_match, bu un-açgözlü yapmak için "U" bayrağını kullanın.

preg_match("/<p>(.*)<\/p>/U", $blog_post, &$matches);

$matches[1] sonra ilk paragrafı içerecektir.

strpos() ilk pozisyonunu bulmak için muhtemelen kullanımı daha kolay ve daha hızlı olacaktır

 <p>

ve birinci

</p>

sonra substr() paragraf ayıklamak için kullanabilirsiniz.

 $paragraph_start = strpos($blog_post, '<p>');
 $paragraph_end = strpos($blog_post, '</p>', $paragraph_start);
 $paragraph = substr($blog_post, $paragraph_start + strlen('<p>'), $paragraph_end - $paragraph_start - strlen('<p>'));

Edit: Aslında başkalarının cevapları regex beni karıştı soru daha kolay ve hızlı ... senin büyük bir kompleks regex olacak ...