douluo6626 2013-05-10 19:16
浏览 246
已采纳

PHP正则表达式,如果存在或不存在

I am working with regular expressions, and I have this block of code:

 $find = "/jsfile\.js?[0-9]*</";
 $switch = 'jsfile.js?version=' . $version . '<';
 $replace = preg_replace($find, $switch, $data);

My problem is that my JavaScript file now has ?version=<number>. Now, if I run this script again, it will break.

Is there a way to say, using regular expressions, in my $find string that ?version= may or may not be there?

  • 写回答

4条回答 默认 最新

  • douyong4842 2013-05-10 19:20
    关注

    Try the following:

    $find = '/jsfile\.js\?(version=)?[0-9]*</';
    

    ? makes the preceding element optional, and parentheses create a group, so (version=)? means "optionally match version=". Note that I also escaped the ? from earlier in the regular expression, since you want this to match a literal ? and not make the s optional.

    In addition, I switched from double to single quotes to ensure the escaping works properly, if you were to use double quotes you would want to escape each backslash, for example:

    $find = "/jsfile\\.js\\?(version=)?[0-9]*</";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题