如何从一个会有规律的进行改变的字符串中提取出另一个指定字符串

这里例子是从一个带有网址的字符串中提取出网址,例子中除了英文不会变,里面的数字参数都是会根据发起的请求参数而改变的。
这是带有网址的字符串:
<script type='text/javascript'>var RIOdItKX='https://c.duomai.com/track.php?site_id=94527&aid=3087&euid=&t=http%3A%2F%2Fyou.163.com%2Fitem%2Fdetail%3Fid%3D1682032';window.location.href=RIOdItKX;</script>
我想要提取的是这一段:http%3A%2F%2Fyou.163.com%2Fitem%2Fdetail%3Fid%3D1682032
具体思路为首先通过strripos()函数获取想要提取的字符串的前缀的位置,然后利用获取到的位置通过substr()函数返回位置后面的字符串,最后通过stristr()把后面的多余部分删掉。
代码如下:

$goodsAddress = strripos($html, '&t=');//从字符串中通过头部标识获取网址的起始地址

上面代码返回结果为:104;意思是‘&t=‘这个字符在字符串($html)中的位置

$goodsAddress = substr($html, $goodsAddress);//提取起始地址后面的字符串

上面代码返回结果为:

&t=http%3A%2F%2Fyou.163.com%2Fitem%2Fdetail%3Fid%3D1682032';window.location.href=GnCCGDxB;</script>

意思是返回字符串位于104后面的字符串

$goodsAddress = str_replace('&t=', '', $goodsAddress);//去掉网址前面的'?t='
$goodsAddress = str_replace('%3A%2F%2F', '://', $goodsAddress);//转换编码
$goodsAddress = str_replace('%3F', '?', $goodsAddress);//转换编码
$goodsAddress = str_replace('%3D', '=', $goodsAddress);//转换编码
$goodsAddress = str_replace('%2F', '/', $goodsAddress);//转换编码
$goodsAddress = stristr($goodsAddress, '\';window', true);//去掉';window之后的字符串,包括';window,然后就只剩下干净的网址咯

上面代码都是替换字符的,最后结果如下

"http://you.163.com/item/detail?id=1682032"

我这个方法是提取字符串中有随机数的。如果是固定字符串直接用str_replace替换掉不想要的就好了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值