我有这个文字和表达,我尝试了一切,但它不起作用。如果我在结尾处删除斜杠,那么它可以正常工作。根据preg_quote手册,我需要解决的唯一问题是:
。 \ + *? [^] $(){} =! < > | : -
我尝试使用反斜杠\/
来逃避最后一个斜杠,并尝试\\/
,但仍然无效。
Sample text: song
file="http://mehangcuugiup.net/images/radio/2013/t4/Thu Ba ngay
16-4-2013.mp3" title="Thu Ba ngay 16-4-2013"/;
NOT Match Expression: $exp = '@song file="(http.+?\.mp3)"
title=".+?(\d+\-\d+\-\d{4})"/@i';
Good Expression: $exp = '@<song file="(http.+?\.mp3)"
title=".+?(\d+\-\d+\-\d{4})"@i';
我知道我可以删除最后一个斜杠来获取我的数据,但这个问题一直困扰着我,我想知道它的原因。
感谢您的任何意见!
答案 0 :(得分:0)
你需要使用双引号"\/"
来逃避该斜杠。“
$exp = "@song file=\"(http.+?.mp3)\" title=\".+?(\d+-\d+-\d{4})\"\/@i";
答案 1 :(得分:0)
如果您将其用作分隔符,则只需要转义/
。在您的情况下,分隔符为@
,因此您无需转义/
(但是,您执行需要转义@
)。
<?php
$song = 'song file="http://mehangcuugiup.net/images/radio/2013/t4/Thu Ba ngay 16-4-2013.mp3" title="Thu Ba ngay 16-4-2013"/';
$exp = '@song file="(http.+?\.mp3)" title=".+?(\d+\-\d+\-\d{4})"/@i';
if(preg_match($exp, $song, $match) === 1){
var_dump($match);
}