php - 从一个字符串中分解多个元素
问题描述
我有以下代码存储在字符串中。
<ol class="tracklist">
<li class="track" data-file="https://www48.zippyshare.com/music/BCFNtvU9/0/file.mp3" data-index="0">
<a class="title name" href="#"><span class="name">1. MI Abaga - Do you know who you are_ Take some time and meditate on you</span></a>
<ul class="actions">
<li>
<a href=https://www41.zippyshare.com/v/BCFNtvU9/file.html" target="_blank"><span class="fa fa-arrow-down mobile-only-ib"></span>
<span class="text desktop-only-ib">Download</span></a>
</li>
</ul>
</li>
<li class="track" data-file="https://www41.zippyshare.com/music/FLCe2uFJ/0/file.mp3" data-index="1">
<a class="title name" href="#"><span class="name">2. MI Abaga - Last Night I Had A Dream About A Hummingbird</span></a>
<ul class="actions">
<li>
<a href="https://www41.zippyshare.com/v/FLCe2uFJ/file.html" target="_blank"><span class="fa fa-arrow-down mobile-only-ib"></span>
<span class="text desktop-only-ib">Download</span></a>
</li>
</ul>
</li>
</ol>
此示例的字符串将被称为$audio
包含上述数据的字符串,我试图删除包含的部分,https://wwwRANDOMNUMBER.zippyshare.com/v/RANDOM-ID/file.html
然后在它们上使用base64_encode以编程方式隐藏用户的所有文件链接,直到他们点击为止。
如何用编码版本替换现有内容?
解决方案
这不能回答您的(隐含的)第二个问题,即用户点击后如何解码 base64。但首先要对它们进行编码:
preg_match_all('#(https://www\d+.zippyshare\.com/(?:[^"]+))#',$audio, $matches);
foreach ( $matches as $match )
{
$encoded = base64_encode($match[1]);
$audio = str_replace($match[1], $encoded, $audio);
}
推荐阅读
- python - 如何在 Dash Plotly 中为各个类指定样式?
- javascript - 如何获得以前选择的 OOP Javascript 记住按钮?
- powershell - Powershell Exchange 列出具有大小的文件夹中的所有主题
- sql - Oracle - 内部查询需要时间
- python - 如何在 Django 表单中显示实际项目而不是其 ID?
- node.js - 如何在 Winston logger.info 上查看 NodeJS 的对象属性?
- r - 使用另一列的值改变新列的问题
- flutter - 是否可以从 Flutter Web 链接显示链接预览?
- redis - 使用反应式 Redis 模板时,Spring Flux 阶段在不同的线程上执行
- android - 如何在android中刷新Mediastore