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
相关产品推荐
相关产品推荐

