Şerit Etiketler ve arasındaki her şeyi

5 Cevap

Nasıl şerit olabilir <h1>including this content</h1>

Ben etiketlerini kaldırmak için şerit etiketleri kullanabilirsiniz biliyorum, ama ben de gitti arasındaki her şeyi istiyorum.

Herhangi bir yardım mutluluk duyacağız.

5 Cevap

HTML ile uğraşıyoruz gibi, doğru işlemek için bir HTML ayrıştırıcı kullanmak gerekir. Sen PHP'nin DOMDocument kullandığınız ve elemanları sorgulayabilirsiniz DOMXPath, örneğin:

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//h1') as $node) {
    $node->parentNode->removeChild($node);
}
$html = $doc->saveHTML();

TÜM etiketleri de dahil olmak üzere içerik şerit istiyorsanız:

$yourString = 'Hello <div>Planet</div> Earth. This is some <span class="foo">sample</span> content!';
$regex = '/<[^>]*>[^<]*<[^>]*>/';
echo preg_replace($regex, '', $yourString);
#=> Hello  Earth. This is some  content!

HTML niteliklerini < veya > içerebilir. Yani, HTML çok dağınık alırsa, bu yöntem işe yaramaz ve bir DOM ayrıştırıcı gerekir.


Regular Expression Explanation

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  <                        '<'
--------------------------------------------------------------------------------
  [^>]*                    any character except: '>' (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  >                        '>'
--------------------------------------------------------------------------------
  [^<]*                    any character except: '<' (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  <                        '<'
--------------------------------------------------------------------------------
  [^>]*                    any character except: '>' (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  >                        '>'

Sen bir XSLT stil kullanmak ve boş dize uyumlu olacaktır h1 etiketi dışında kendilerini tüm etiketleri maç ve ardından belgeye geçerli olabilir. Bu olsa kadar basit bir şey yapmak için biraz ağır olabilir.

Ayrıca etiketlerini kaldırmak ve aynı zamanda arasındaki her şeyi için sayisinda strip_tags kullanabilirsiniz ..

$ Html etiketlerini kaldırmak istediğiniz yerden sizin html veya php içerir.

strip_tags ($ html, "");

Ben bu sizin için çalışacağını düşünüyorum bu deneyin.

Bu deneyin:

preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', '<h1>including this content</h1>');

Example:

echo preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', 'Hello<h1>including this content</h1> There !!');

Output:

Hello There