rel özniteliği metin kapmak için gerçekten çok kolay bir yolu var yani
<a href='#' rel='i want this text here'></a>.
Ben regex ile bu sabah denedim ama hayır şans yaşıyorum.
HTML% 100 statik ve sizin tarafından kontrol sürece, ben seni DOMDocument , or the PHP Simple HTML DOM Parser a> gibi yerleşik olanlar gibi bir HTML çözümleyici kullanmanızı öneririz. Basit bir Regex daha kurmak için daha fazla çaba, ama her durumda ve varyasyonları daha güvenilir çalışacaktır.
<a href='#' rel="i want this text here"></a>
<a href='#' REL="i want this text here"></a>
<a rEL='i want this text here' href='#' ></a>
Başkaları tarafından dedi, onun normal değil gibi HTML ayrıştırma için regex kullanmaktan kaçınmalısınız. Ama HTML yapısı regex kullanabilirsiniz emin iseniz. Aşağıdaki program, istediğiniz şeyleri ayıklamak olacak:
<?php
$a = "<a href='#' rel='i want this text here'></a>";
if(preg_match("{<a href.*?rel='(.*?)'.*?>}",$a,$matches)) {
echo $matches[1]; // prints i want this text here
}
?>
Diğer posterler gibi işaret var: Birçok şeyler, html ayrıştırma için regex kullanmak gerçekten kötü bir fikir yanlış gidebilir ve daha fazla destek yapmak gerekir. (Pekka yorumuna bak!)
Burada bazı değer katmak için ben her rel niteliğini almanın tam örneğini postet:
<?php
$html = "<a href='#' rel='i want this text here'></a>";
$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXPath($dom);
$refAttributes = $xpath->query("//a[@rel]");
// ^^ This means: Get my every <a...></a> that has a rel attribute
foreach($refAttributes as $refAtt) {
var_dump($refAtt->getAttribute("rel"));
}
Ve ek okuma için bir deneyebilirsiniz:
http://kore-nordmann.de/blog/do_NOT_parse_using_regexp.html
http://kore-nordmann.de/blog/0081_parse_html_extract_data_from_html.html
Do not use regular expressions for irregular languages like HTML. Sen XPath kullanarak elde edebilirsiniz. Örnek:
$doc = new DOMDocument();
$doc->loadHtml($htmlAsString);
$xpath = new DOMXPath($doc);
$nodelist = $xpath->query('//a[@rel]');