2012-09-06 120 views
1

今天早些時候,我問了一個問題,關於具有與回報FO一些功能替換所有的HTML鏈接的HREF中的正則表達式的解決方案..PHP的DOMDocument loadHTML

然後我刪除它,因爲它似乎我可以解決它使用DomDocument,但事實證明,我不能...

看到我的html有很多錯誤的html syntex,html5代碼等,所以都loadHTML,loadXML工作。 。

請如果有人可以提供正則表達式的解決方案來尋找href的,並使用調用一個函數替換所有..我tri編輯preg_replace和preg_replace_callback,但我不明白的$ 1,$ 2..whole概念.. 我已經搜索了所有類似的問題,但他們都有DomDocumenet,我不能使用的答案..

老類似的問題: Grabbing the href attribute of an A element

Find all hrefs in page and replace with link maintaining previous link - PHP

,但我需要的正則表達式的解決方案

回答

1

我創建one..the主要問題一般人恐怕都具有其它屬性,HREF之前,之後的href,空間,有錯誤的URL規範,href網址在單人或雙人報價等..大優點是,我學會了如何使用它們..

$callback = function ($match) use($params){ 
     $data = MyClass::updateUrl($match[2], $params); 
     $return_data = 'href='.$match[1].$data.$match[1]; 
     return $return_data; 
    }; 
    $reg = "#href\s*=\s*(\"|')?([^\"'>]+)(\"|')#i"; 
    return preg_replace_callback($reg, $callback, $html); 
1

試試這個代碼:

// $text - your text 
// $1 - preg variable for 1st "(.*)" match 
// $2 - preg variable for 2nd "(.*)" match 
preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a $1 href="http://new.href" $3>',$text); 

我貼在這裏工作的例子: http://codepad.org/KORtcb9q

+0

thnx..similar解決方案我已實現..喜歡.. :) –

相關問題