【问题标题】:Correctly format URL link in PHP在 PHP 中正确格式化 URL 链接
【发布时间】:2012-11-11 15:04:50
【问题描述】:

我有一个自定义字段(称为“网站”),用户可以在其中将网站输入到他们的 URL。我的php代码如下

<div class="profileInfo">
   <h4  class="website">Website:</h4>
      <?php if ( get_post_meta($post->ID, 'website', true)) { ?>
        <p><a href="http://<?php echo get_post_meta($post->ID, 'website', true) ?>"><?php echo get_post_meta($post->ID, 'website', true) ?></a></p>
      <?php } else { ?>
    <p class="na">no email provided</p>
    <?php } ?>
</div>

在上面的示例中,我在 URL 前加上 http://

所以我的问题是,当用户在自定义字段中输入像 http://www.example.com 这样的 URL 时,它不会正确链接到该站点。 URL 在前端 http//www.example.com 上看起来像这样

奇怪的是冒号 : 被剥离或取出,因此 URL 不起作用!我认为这与有两个 http://

现在,我尝试从 PHP 代码中删除 http://

&lt;p&gt;&lt;a href="&lt;?php echo get_post_meta($post-&gt;ID, 'website', true) ?&gt;"&gt;&lt;?php echo get_post_meta($post-&gt;ID, 'website', true) ?&gt;&lt;/a&gt;&lt;/p&gt;

假设用户现在将 www.example.com 输入到自定义字段并发布条目。网址现在转到

http://mysite.com/www.example.com

它尝试将 URL 构建到我当前的网站页面中。不知道为什么它不将其视为 URL。

寻求一些帮助如何在 PHP 中正确编写此代码。

谢谢

【问题讨论】:

    标签: php wordpress url


    【解决方案1】:
    <?php 
    if ( get_post_meta($post->ID, 'website', true)) 
    {
        $link = get_post_meta($post->ID, 'website', true);
        $link = str_replace(array('http://','https://'), array('',''), $link);
        ?><p><a href="http://<?=$link?>"><?=$link?></a></p><?php 
    }  
    else
    { 
        ?><p class="na">no email provided</p><? 
    } 
    ?>    
    

    这将替换 url 中的所有 http://。

    【讨论】:

    • 嗨 Scottymeuk,干杯..你认为你可以在我上面的代码的上下文中写出来吗?不知道该怎么做
    • 嗨,再次感谢,但我仍然在努力理解如何使用与我提供的 php 代码相关的这个字符串。您是否可以将我的 sn-p 放在上面并将您的代码放入其中,以便我可以确切地看到我应该做什么?感谢和抱歉noobiness
    • 太棒了,非常感谢...感谢代码的更新...必须再等 2 分钟才能正确标记
    • 完全没问题。应该可以,但我讨厌这个网站上的文本编辑器,让编写代码变得如此困难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 2023-03-26
    • 2016-04-29
    相关资源
    最近更新 更多