You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP/WordPress中去除URL前缀方法及URL输出异常求助

解决PHP/WordPress中URL前缀去除与显示异常问题

看起来你遇到两个小问题:一是URL输出时带了多余的前缀/路径,二是代码里的<?php echo $link; ?>直接被当成文本显示了——这应该是你在赋值数组时的写法有误。咱们一步步来解决:

1. 先修复代码输出异常的问题

你提到把URL放在<p>标签内赋值给数据数组后,显示成了test.com /<?php echo $link; ?>,这说明你可能是把PHP代码直接写进了字符串里,而不是用PHP语法拼接内容。

错误示例(会直接输出PHP标签文本):

$link = 'https://test.com/about';
$data = [
    'link_content' => '<p>test.com /<?php echo $link; ?></p>'
];

正确写法(用PHP字符串拼接):

$link = 'https://test.com/about';
$data = [
    'link_content' => '<p>' . get_processed_link_text($link) . '</p>'
];

或者用双引号解析变量(注意转义特殊字符):

$link = 'https://test.com/about';
$data = [
    'link_content' => "<p>{$this->get_processed_link_text($link)}</p>"
];

2. 处理URL显示:显示“首页”或仅域名test.com

接下来根据你的需求,提供两种处理逻辑:

方案A:当URL是首页时显示“首页”,否则显示域名

function get_processed_link_text($url) {
    // 获取WordPress首页URL
    $home_url = get_home_url();
    // 去除URL末尾的斜杠(避免匹配问题)
    $home_url = rtrim($home_url, '/');
    $url = rtrim($url, '/');

    if ($url === $home_url) {
        return '首页';
    } else {
        // 解析URL提取域名
        $parsed = parse_url($url);
        return $parsed['host'] ?? $url; // 如果解析失败,返回原URL
    }
}

方案B:无论什么URL都只显示域名(如test.com)

如果不需要区分首页,直接统一显示域名:

function get_processed_link_text($url) {
    $parsed = parse_url($url);
    // 提取域名,比如从https://test.com/blog提取test.com
    return $parsed['host'] ?? $url;
}

额外说明:如果$link本身就是相对路径

如果你的$link是相对路径(比如/about),可以先把它转成绝对URL再处理:

$absolute_link = home_url($link);
// 再传入上面的处理函数
$processed_text = get_processed_link_text($absolute_link);

3. 最终输出示例

把处理后的内容输出到页面时,直接echo数组里的内容即可:

echo $data['link_content'];

这样就能得到你想要的“首页”或者test.com的显示效果啦。

内容的提问来源于stack exchange,提问作者MikeL5799

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:12:48