开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 14763|回复: 8
收起左侧

[已解决] PHP取文本中间取不到

 关闭 [复制链接]
结帖率:91% (191/211)
发表于 2019-8-7 16:16:42 | 显示全部楼层 |阅读模式   湖北省武汉市
15精币
  1. //读店铺首页源代码
  2. $text = file_get_contents(“https://shaluoli.tmall.com”);
  3. //然后用函数取出指定中间文本
  4. function getSubstr($str, $leftStr, $rightStr)
  5. {
  6.     $left = strpos($str, $leftStr);
  7.     //echo '左边:'.$left;
  8.     $right = strpos($str, $rightStr,$left);
  9.     //echo '<br>右边:'.$right;
  10.     if($left < 0 or $right < $left) return '';
  11.     return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
  12. }
复制代码




补充内容 (2019-8-7 16:17):
需要取出 页面源代码中 shopId  和 sellerId的值 是一个长整数
               


补充内容 (2019-8-7 16:18):
不想用正则 就想用文本取中间的方式   跟易一样

最佳答案

查看完整内容

试试这个看看 取文本中间 function get_between($input, $start, $end) { $str = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1)); return $str; }

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:95% (20/21)

签到天数: 24 天

发表于 2019-8-7 16:16:43 | 显示全部楼层   重庆市重庆市
试试这个看看

取文本中间
function get_between($input, $start, $end) {
$str = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
return $str;
}

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:75% (3/4)

签到天数: 28 天

发表于 2019-8-7 16:57:23 | 显示全部楼层   广东省佛山市
用我这个吧,希望采纳。

function getSubstr($str, $leftStr, $rightStr){
        $left = strpos($str, $leftStr);
        $right = strpos($str, $rightStr,$left);
        if($left < 0 or $right < $left) return '';
        return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
}
回复

使用道具 举报

结帖率:91% (191/211)

签到天数: 16 天

 楼主| 发表于 2019-8-8 14:55:36 | 显示全部楼层   湖北省武汉市
1248876244 发表于 2019-8-7 16:25
试试这个看看

取文本中间

再请教下面代码中如何取出shopID的值 里面有双引号
  1. appId: 2,
  2.                 assetsHost: "//assets.alicdn.com/",
  3.                 toolbar: false,
  4.                 pageType: "tmall",
  5.                 sysId: "shop",
  6.                 shopId: "66685895",
  7.                 sellerId: "704227448",
  8.                 wtId: "2020583433",
  9.                 jstracker2: {
  10.                     url: "http://shop.taobao.com/tmall"
  11.                 },
复制代码
回复

使用道具 举报

结帖率:0% (0/3)
发表于 2019-8-23 08:40:31 | 显示全部楼层   河南省信阳市
  1. /**
  2. * [mysubstr 文本取中间]
  3. * [url=home.php?mod=space&uid=275307]@param[/url]  [type] $str   [准备截取的字串]
  4. * @param  [type] $start [开始字符串]
  5. * @param  string $end   [结束的字符串]
  6. * [url=home.php?mod=space&uid=161696]@Return[/url] [type]        [返回截取的字符串]
  7. */
  8. function mysubstr($str,$start,$end='')
  9. {
  10. //获取截取开始位置
  11. $k = strpos($str,$start);
  12. if($k===false){
  13.     return '';
  14. }
  15. $k+=strlen($start);
  16. //找到后面一个字符串相对于截取第一个后的位置
  17. if(!$end==''){
  18.      $e=strpos(substr($str,$k),$end);
  19. }else{
  20.      //没有指定的尾巴那么就截取到最后
  21.      return substr(substr($str,$k),0);
  22. }
  23. //先截取第一个位置  在从第一次截取的内荣里截取第第二个位置
  24. return substr(substr($str,$k),0,$e);
  25. }
复制代码
回复

使用道具 举报

签到天数: 1 天

发表于 2019-10-31 14:33:00 | 显示全部楼层   广东省东莞市
为什么不用正则表达式???
回复

使用道具 举报

结帖率:99% (93/94)

签到天数: 13 天

发表于 2019-11-3 17:41:24 | 显示全部楼层   湖北省咸宁市
  1. //取中间文本
  2. function getSubstr($str, $leftStr, $rightStr)
  3.   {
  4.     $left = strpos($str, $leftStr);
  5.     //echo '左边:'.$left;
  6.     $right = strpos($str, $rightStr,$left);
  7.     //echo '<br>右边:'.$right;
  8.     if($left < 0 or $right < $left) return '';
  9.     return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
  10.   }
复制代码
回复

使用道具 举报

签到天数: 16 天

发表于 2019-11-15 23:04:42 | 显示全部楼层   重庆市重庆市
function getSubstr($str, $leftStr, $rightStr){
        $left = strpos($str, $leftStr);
        $right = strpos($str, $rightStr,$left);
        if($left < 0 or $right < $left) return '';
        return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
}测试可以用
回复

使用道具 举报

结帖率:0% (0/1)
发表于 2020-2-15 10:08:18 | 显示全部楼层   河南省郑州市
用正则匹配不是少很多事儿吗。。。preg_match_all
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表