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

WordPress自定义文章生成XML时ACF文本域
字符无法替换问题

解决ACF文本域换行生成 无法移除的问题

嘿,我之前在处理WordPress自定义文章生成XML时,也踩过几乎一模一样的坑!你遇到的 其实是**回车符(CR,ASCII码13)**的HTML实体形式,光用str_replace('
', '', ...)没用,大概率是因为原始内容里的不是字符串" ",而是实际的回车控制字符,只是在XML输出时被转成了这个实体。

给你几个靠谱的解决思路,按顺序试试:

1. 直接替换原始回车字符

既然 对应的是ASCII 13,直接用chr(13)匹配原始字符替换:

// 先处理标签,再替换回车和换行
$stripped = strip_tags($addressValue['c_restaurant_map_address'], '<br /><br/><br>');
$cleaned = str_replace(array('<br />', '<br>', chr(13), chr(10)), '', $stripped);

这里顺便把换行符(LF,ASCII 10)也一起处理了,避免残留其他换行痕迹。

2. 先解码HTML实体再清理

如果内容已经被HTML编码过,实体形式的 是实际存在的字符串,那就先解码再替换:

$decoded = html_entity_decode($addressValue['c_restaurant_map_address']);
$cleaned = str_replace(array('<br />', '<br>', "\r", "\n"), '', strip_tags($decoded));

html_entity_decode会把所有HTML实体转成原始字符,包括 变成回车符,之后再统一替换掉就行。

3. 用正则表达式一次性搞定所有情况

如果想偷懒一步到位,正则可以匹配所有换行相关的标签和控制字符:

$cleaned = preg_replace('/(<br\s*\/?>|\r|\n)/i', '', strip_tags($addressValue['c_restaurant_map_address'], '<br>'));

这个正则会忽略大小写匹配<br>、<br/>、<br />,还有回车(\r)、换行(\n),一次性全部替换为空。

你原来的代码没生效,核心原因是混淆了原始控制字符和HTML实体字符串——XML输出时会把回车符自动转成 ,但你处理的是原始内容,所以要针对原始字符操作,而不是实体字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:25:31