我試圖從下面一行中獲取「img」標籤結束和「關閉」標籤之間的字符串(你好,我是來自img標籤之後) 。匹配「img」標籤和「alt」標籤和行號之間的字符串
<a href="products.html><img src="image.jpg" alt="alt value">hello i am from after img tag</a>
然後檢查看他們是否匹配。同時我想找出該行的編號。 我已經嘗試了下面的代碼,它給了我一個網頁的行號和行。
$dom = new domDocument;
$dom->loadHTMLFile('http://www.google.com');
$dom->preserveWhiteSpace = true;
$dom->formatOutput = true;
$new = htmlspecialchars($dom->saveHTML(), ENT_QUOTES);
$lines = preg_split('/\r\n|\r|\n/', $new);
foreach ($lines as $lineNumber => $line) {
echo $lineNumber . \r\r. $line;
}
以下代碼給出了圖像源和alt標記。我無法獲取行號或「img」標記結尾和「a」標記之間的文本(您好,我是來自img標記之後的)。
$alts = array();
$tags = $dom->getElementsByTagName('img');
foreach($tags as $tag) {
$alts[$tag->attributes->getNamedItem('src')->nodeValue]
= $tag->attributes->getNamedItem('alt')->nodeValue;
}
foreach($alts as $key => $alt) {
echo "{$key} => {$alt}<br/>";
}
我知道正則表達式不適用於html解析,但我也嘗試過,看看它是否適用於以下行。 $ ALT =「你好,我是從的img標籤 後」 的正則表達式我已經是, //內ALT什麼
preg_match_all('|\s*alt[^>]*=[\'"](.*?)[\'"]|i', $alt, $altTag);
「IMG」標籤,並關閉「」標籤的結束之間
//什麼。
preg_match_all("#<\s*a[^>]*><\s*img[^>]*>(.*?)<\s*/\s*a>#s", $alt, $foo);
它完美的作品這樣,但是當試圖利用對變量$線相同的正則表達式(從上面的代碼),那麼它不給我任何東西。 任何人都可以幫助我。我真的需要做這個工作。感謝
謝謝,但正則表達式我有它適用於你在那裏提到的單個字符串。它不適用於變量$ line($ line變量來自我頂部放置的示例) – ron 2013-02-21 14:12:42
但是,您可以在不使用DOM文檔的情況下執行此操作,像這樣 preg_match_all('#] +>(。*)# isU',file_get_contents('http://www.google.com'),$ matches); $ matches = array_map('strip_tags',$ matches [1]); print_r($ matches [1]); – Winston 2013-02-21 14:22:18