HTML arasındaki ifadeler / kelimeler PHP kullanarak bulun

6 Cevap

Ben bir HTML belgesinin parçası olan deyimler / sözcükleri bulmak için sağlam bir şekilde merak ediyorum. Örneğin ben şu belge varsa:

<a href="#">This is a test</a><b>Another test</b>

Amacım ve "Başka bir test" "Bu bir denemedir" bulmak ve başka bir şey ile değiştirmektir. Bu örnek ifadeler ve o numaraları veya ampersanı sembolü içerebilir unutmayın.

Herhangi bir yardım büyük olurdu.

Teşekkür ederim

6 Cevap

Lütfen HTML XML olarak düşünün ve uzantısı (ya da herhangi başka bir XML uzantısı PHP dahil) DOM (PHP 5) veya DOM XML (PHP 4) kullanın.

Her düğüm için, DomNode.GetValue (ne kullandığınız kütüphane bağlı) kullanarak içine metin alabilirsiniz.

I str_replace() gibi bir şey içine bakmak istiyorum

Here Tüm html şeyler (html etiketleri, scriptler, css) ve daha sonra str_replace ile ne istersen yerine nasıl kaldırılacağı açıklanmıştır.

Bu istemci tarafı yapmak için bir seçenek ise, ben öneririm jQuery replaceWith()

Eğer php en strip_tags($string, $tagsToRemove) kullanabilirsiniz

$justText = strip_tags('<a href="#">This is a test</a><b>Another test</b>');

Ve sonra metin olurdu, böylece kullanabilirsiniz str_replace("new text", $justText);

Sen etiketleri rağmen, ayırmak tutmak için strip_tags() ikinci parametresini kullanarak onu kırmak zorunda kalabilirsiniz.

$html = '<a href="#">This is a test</a><b>Another test</b>';
$anchorText = strip_tags($html, '<a>');
$paraText = strip_tags($html, '<p>');
$html = str_replace("new anchor text", $anchorText);
$html = str_replace("new paragraph text", $paraText);

Burada anahtar HTML ayrıştırmak, bir anlamda, bir normal ifadeyi kullanmak için ...

Yani kullanmak istiyorum:

<?php

$str = "<a href =\"\">Hello</a>"; //The string to search

preg_match('/(<.+>)??.+(<\/.+>)??/i',$str,$match); //Find all occurences and store the tag content in an array called $match

echo $match[0]; //Echo the first value

?>

Bu temelde (sayfanızın HTML olarak ayarlanmış ediyorum) giriş dizesini arar ve dizideki bir değer olarak etiketleri arasındaki metnin her maç döndürür. İlk etiketi için için, değeri [0], $ maçında ikinci [1], vb $ maçında saklanır

İlk seçilen arasındaki sadece içeriği bırakarak, bir HTML etiketi ile başlar ve bir HTML etiketi ile biter, ama ya etiketini seçerek bir desen bularak yapar.

Bu yardımcı olur umarım!

Braeden