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条)

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源