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

如何在WordPress函数中替换含可变字符串的文章内iframe地址?

解决WordPress文章中iframe域名替换问题

嘿,我懂你的困扰!普通的str_replace只能替换固定字符串,确实搞不定这种需要保留可变路径的场景。别慌,咱们用正则表达式就能精准搞定这个需求——只替换iframe src里的旧域名,完整保留后面的可变部分。

解决方案代码

直接把下面的函数加到你的主题functions.php文件里就行:

function replace_iframe_src($content) {
    // 正则匹配iframe的src属性中旧域名开头的地址,捕获后续可变路径
    $pattern = '/src="http:\/\/my1stembed\.tld\/(.*?)"/';
    // 替换成新域名,并用$1引用捕获的可变路径部分
    $replacement = 'src="http:\/\/my2ndembed\.tld\/$1"';
    $content = preg_replace($pattern, $replacement, $content);
    return $content;
}
add_filter('the_content', 'replace_iframe_src');

代码说明

  • preg_replace是PHP的正则替换函数,专门用来处理带变量的匹配替换场景
  • 正则里的(.*?)是非贪婪捕获组,会精准抓取旧域名后面的所有内容(比如embed/variablefilename/),直到遇到src属性的结束双引号,确保不会误匹配其他内容
  • 替换时用$1引用刚才捕获的可变路径,和新域名拼接后就是你想要的正确地址
  • 注意:域名里的.在正则中是特殊字符,所以要加反斜杠\转义成\.,这样才会匹配实际的域名点

效果验证

原iframe代码:

<iframe src="http://my1stembed.tld/embed/variablefilename/" width="640" height="360" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe>

替换后会变成:

<iframe src="http://my2ndembed.tld/embed/variablefilename/" width="640" height="360" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe>

完美符合你的需求,而且只会替换iframe src里的目标域名,不会影响文章里的其他内容哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:52:51