【问题标题】:Laravel href link not working if URL doesn‘t contain string 'http'如果 URL 不包含字符串“http”,Laravel href 链接将不起作用
【发布时间】:2018-12-21 02:28:10
【问题描述】:

我有这个标签

<a href="{{ $organization->website }}">Link</a>

如果 $organization->website 是一个开头包含 http:// 或 https:// 的 url,则该链接将有效。

但是,如果没有,该链接会将我带到类似的地方

http://localhost/public/www.google.com 而不是 www.google.com

我知道你可以使用 // 这样没有 http 的链接就可以工作,就像这样

<a href="//{{ $organization->website }}">Link</a>

但是,开始时带有 http:// 或 https:// 的链接现在将不起作用。

是否有一种解决方案可以同时使用(不带 http 的 URL 和带 http 的 URL)?

【问题讨论】:

标签: html laravel http href


【解决方案1】:

您可以将 https://、http:// 或 / 替换为 // 即可完成您的工作

喜欢:

'//' . (strpos($url, '//') !== false ? substr($url, strpos($url, '//') + 2) : ltrim($url, '/'))

所以应该是:

<a href="{{ '//' . (strpos($organization->website, '//') !== false ? substr($organization->website, strpos($organization->website, '//') + 2) : ltrim($organization->website, '/')) }}">Link</a>

https://www.google.com、http://www.google.com、//www.google.com、/www.google.com 或 www.google.com 将转换为 //www.google.com,我相信这是您所需要的

【讨论】:

    【解决方案2】:

    这是我使用 OctoberCMS (laravel) 在树枝模板中解决它的方法:

    eventen.about_url|slice(0, 4) 在 url 变量的开头查找“http”,如果存在,则按原样使用该链接,如果不存在,则在链接前添加 //。

    {% if eventen.about_url|slice(0, 4)=='http' %}
        <a href="{{eventen.about_url}}" target="_blank">
           Link
         </a>
    {% else %}
        <a href="//{{eventen.about_url}}" target="_blank">
           Link
        </a>
    {% endif %}
    

    【讨论】:

      猜你喜欢
      • 2018-04-04
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多