Using SimpleHtmlDom, how to remove and replace a specific attribute

后端 未结 3 795
囚心锁ツ
囚心锁ツ 2020-12-21 21:41

I\'m currently using this HTML DOM PARSER using php : http://simplehtmldom.sourceforge.net/

I\'m confused on how to remove and replace the selected attribute h

相关标签:
3条回答
  • 2020-12-21 21:57

    This should do it:

    $doc = str_get_html($code);
    foreach ($doc->find('a[href]') as $a) {
        $href = $a->href;
        if (/* $href begins with a relative URL path */) {
            $a->href = 'index/'.$href;
        }
    
    }
    $code = (string) $doc;
    

    You could also use PHP’s native DOM library:

    $doc = new DOMDocument();
    $doc->loadHTML($code);
    $xpath = new DOMXpath($doc);
    foreach ($xpath->query('//a[@href]') as $a) {
        $href = $a->getAttribute('href');
        if (/* $href begins with a relative URL path */) {
            $a->setAttribute('href', 'index/'.$href);
        }
    }
    $code = $doc->saveHTML();
    
    0 讨论(0)
  • 2020-12-21 22:10
    $html = str_get_html($string); 
    if ($html){ // Verify connection, return False if could not load the resource
        $e = $html->find("a");
        foreach ($e as $e_element){
            $old_href = $e_element->outertext;
            // Do your modification in here 
            $e_element->href = affiliate($e_element->href); // for example I replace original link by the return of custom function named 'affiliate'
            $e_element->href = ""; //remove href
            $e_element->target .= "_blank"; // I added target _blank to open in new tab
            // end modification 
            $html = str_replace($old_href, $e_element->outertext, $html); // Update the href
        }
    
    0 讨论(0)
  • 2020-12-21 22:19

    The official manual has several examples that basically cover all you need:

    http://simplehtmldom.sourceforge.net/manual.htm

    If you have issues with some specific step, feel free to update your question and provide some of your code.

    0 讨论(0)
提交回复
热议问题