0

Google のインデックス付き URL をアクティブに保つため
"/unknownnumber/knownstring1-unknownstring.html"
に、PHP で他の新しい URL にリダイレクトするようなものを含む特定の URL に一致する正規表現を探しています。
"/unknownnumber/knownstring2-unknownstring"

私は next ステートメントを使用しましたが、 return 、何か間違ったことをしてい$do_matchます0...

誰かが私の正規表現を手伝ってくれませんか?

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

4 に答える 4

2

ドット (.)、ダッシュ (-) は特別な意味を持つメタ文字です。

「unknownnumber」が文字列の数値部分である場合、正規表現パターンは次のようになります。

$do_match = preg_match('/\/(\d+)\/knownstring1\-([^\.]+)\.html/', $input, $matches);
于 2012-12-28T07:48:03.017 に答える
2

A$は行末マーカーです。.正規表現の最後に配置する必要があり、エスケープする必要があるリテラルも意味します。

preg_match('~"([0-9]+)/knownstring1-(.*?)\.html"$~'....
于 2012-12-28T07:48:39.847 に答える
1
$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 > 
于 2012-12-28T08:00:17.053 に答える
0

これを試してください:

$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
)
于 2012-12-28T08:15:46.880 に答える