PHP:无合适分隔符时如何拆分字符串(WordPress场景)
解决WordPress页面中YouTube链接连在一起的问题
嗨,这个场景用正则表达式处理是最省心的!你之前尝试的explode()和substr()不太适配这个需求——explode('/')会把链接拆成零散的片段,substr()需要固定长度(虽然YouTube视频ID是11位,但如果内容里混了其他内容就不好控制了)。
给你两个实用的解决方案:
方案一:提取所有链接再重新拼接
先精准提取所有完整的YouTube链接,再用空格把它们连接起来,代码如下:
// 假设$content是你从WordPress获取到的原始内容 preg_match_all('/https:\/\/youtu\.be\/[a-zA-Z0-9_-]+/', $content, $matches); // 将匹配到的所有链接用空格分隔拼接 $formatted_content = implode(' ', $matches[0]);
这个方法的好处是能过滤掉内容里的其他杂项,只保留符合格式的YouTube链接,非常精准。
方案二:直接在原始内容中插入空格
如果你的内容里除了连在一起的YouTube链接还有其他内容,想保留原有内容同时给链接加空格,可以用preg_replace()直接替换:
// 在每个YouTube链接的开头前插入空格,再去掉开头可能多余的空格 $formatted_content = trim(preg_replace('/(https:\/\/youtu\.be\/)/', ' $1', $content));
原理是找到每个https://youtu.be/的起始位置,在它前面加一个空格,最后用trim()去掉内容开头可能出现的多余空格,不会影响其他内容的格式。
这两种方法都能轻松把你那种连在一起的链接转换成带空格分隔的格式~
内容的提问来源于stack exchange,提问作者Panchoa
相关产品推荐
相关产品推荐

