PHP正则表达式匹配时间戳,但不是脚本标记的一部分


PHP regex matches timestamp but not when part of script tag

我有一个regex模式,它即将运行,但我仍然缺少一些东西。我只想交换<script>标签的src:的时间戳

所以我想要这个:

stuff BEFORE...<script src='/assets/mySite-1238459846.js'></script>
stuff AFTER...

是这样的:

stuff BEFORE...<script src='/assets/mySite-0123456789.js'></script>
stuff AFTER...

以下是切换时间戳的代码,但仅当使用src时,它不包含任何特殊字符或斜杠,这意味着只有$stringNotSpecial有效:

$stringNotSpecial='mySite-1238459846.js'; //Works!
$stringSpecial='stuff BEFORE...<script src='/assets/mySite-0123456789.js'></script>
stuff AFTER...'; //DOESNT work :(
$timestamp='0123456789';
$pattern = '/mySite-[0-9]+.js/';
echo preg_replace($pattern, 'mySite-'.$timestamp.'.js', $stringNotSpecial);
echo '<br>';
echo echo preg_replace($pattern, 'mySite-'.$timestamp.'.js', $stringSpecial);

尝试

$stringSpecial='stuff BEFORE...<script src=''/assets/mySite-0123456789.js''></script>stuff AFTER...';

$stringSpecial='stuff BEFORE...<script src="/assets/mySite-0123456789.js"></script>stuff AFTER...';

从的输出http://ideone.com/Vq8TSS-

result: Success     time: 0.01s    memory: 20520 kB     returned value: 0
input: no
output:
mySite-0123456789.js<br>stuff BEFORE...<script src='/assets/mySite-0123456789.js'></script>stuff AFTER...