簡體   English   中英

PHP(URL)匹配正則表達式問題

[英]PHP (URL) matching regex issue

我正在尋找一個正則表達式來匹配給定的URL,其中包含類似
"/unknownnumber/knownstring1-unknownstring.html"
為了用PHP將其重定向到其他新網址,例如
"/unknownnumber/knownstring2-unknownstring"
使Google索引網址保持活動狀態。

我使用了next語句,但是$do_match返回0 ,所以我做錯了...
有人可以幫我做正則表達式嗎?

$myURL = "/unknownnumber/knownstring1-unknownstring.html";
$do_match = preg_match('~"([0-9]+)/knownstring1-(.*?)$.html"~', $myURL, $matches);

點(。),破折號(-)是具有特殊含義的元字符。

如果'unknownumber'是字符串的數字部分,則regexp模式如下所示:

$do_match = preg_match('/\/(\d+)\/knownstring1\-([^\.]+)\.html/', $input, $matches);

$是行尾標記。 您需要將其放在正則表達式的末尾,也要表示文字. 你需要逃脫它。

preg_match('~"([0-9]+)/knownstring1-(.*?)\.html"$~'....
$myURL = "/unknownnumber/knownstring1-unknownstring.html";
if(preg_match('#"/(\d+)/knownstring1-(.*)\.html"#', $myURL, $matches))
    var_dump($matches);

輸出:

php > $exp = '#"/(\d+)/knownstring1-(.*)\.html"#';
php > $str = '"/23421/knownstring1-unknownstring.html"';
php > if(preg_match($exp, $str, $matches)) var_dump($matches); else echo 'nope' .     PHP_EOL;
array(3) {
  [0]=>
  string(40) ""/23421/knownstring1-unknownstring.html""
  [1]=>
  string(5) "23421"
  [2]=>
  string(13) "unknownstring"
}
php > 

試試看:

$myURL = "/123/knownstring1-unknownstring.html";
$do_matches = preg_match('#\/(\d+)\/(.*)\-(.*)\.html#', $myURL, $matches);
print_r($matches);

print_r輸出:

Array
(
    [0] => /123/knownstring1-unknownstring.html
    [1] => 123
    [2] => knownstring1
    [3] => unknownstring
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM