problem with adding root path using php domdocument

前端 未结 2 1488
滥情空心
滥情空心 2020-12-04 03:57

I would like to add root path of the site for those anchor tag which have not root path using php dom document, Till now a have made a function to do this with str_replace f

相关标签:
2条回答
  • 2020-12-04 04:43

    Instead of if(strpos($href,'www' > 0)) you should use if(strpos($href,'www') !== false).

    The > 0 was inside the function-call (strpos()).

    0 讨论(0)
  • 2020-12-04 04:47

    I see some problems in your code:

    1. The decision whether or not an URI has a full root path (is a fully qualified URI) or not.
    2. You're not resolving relative URLs to the base URL. Just appending does not do the job.
    3. The function returns a DomDocument Object and not a string. I assume you don't want that but I don't know, you have not written in your question.

    How to detect if a URL is a relative one.

    Relative URLs don't specifiy a protocol. So I would check for that to determine whether or not a href attribute is a fully qualified (absolute) URI or not (Demo):

    $isRelative = (bool) !parse_url($url, PHP_URL_SCHEME);
    

    Resolving a relative URL to a base URL

    However this won't help you to properly resolve a relative URL to the base URL. What you do is conceptually broken. It's specified in an RFC how to resolve a relative URI to the base URL (RFC 1808 and RFC 3986). You can use an existing library to just let the work do for you, a working one is Net_URL2:

    require_once('Net/URL2.php'); # or configure your autoloader
    
    $baseUrl = 'http://www.example.com/test/images.html';
    
    $hrefRelativeOrAbsolute = '...';
    
    $baseUrl = new Net_URL2($baseUrl);
    
    $urlAbsolute = (string) $baseUrl->resolve($hrefRelativeOrAbsolute);
    
    0 讨论(0)
提交回复
热议问题