3

Internetz でこのコードを見つけました。現在のページの URL をチェックします。

function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}

だから今、私はこのようなことができます。

elseif (curPageURL() == "http://www.example.com/pageexample") {
<meta tags here>
}

偉大な。しかし、これをページネーションページにも使用したいと思います。これらの URL は次のようになります。

http://www.example.com/pageexample?start=30&groep=0
http://www.example.com/pageexample?start=60&groep=0
http://www.example.com/pageexample?start=90&groep=0
[....]
http://www.example.com/pageexample?start=270&groep=0

これらのリンクのすべてに if ステートメントを使用できますが、むしろ使用したいと思います。ワイルドカードなどを追加することは可能ですか? このように私は推測します(に注意してください*

elseif (curPageURL() == "http://www.example.com/pageexample" OR curPageURL() == "http://www.example.com/pageexample?start=*&groep=0") {

編集:これらすべての URL に対してこれを実行したいと思います。なぜなら、それらに同じmeta description, <title>and <link rel="canonical". すべてのページ (10+ atm) に対して if ステートメントを実行することで手動でこれを行うことができましたが、もっと良い方法があると考えました。

4

6 に答える 6

3

parse_url()関数を使ってみませんか?マニュアルページから:

<?php

$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));

?>

// The above would print
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)

host特定のケースでは、変数と変数をチェックするだけpathです。

于 2012-06-12T13:41:24.290 に答える
2

正規表現の問題によく似ています:

if (preg_match("#^http://www.example.com/pageexample(\?start=[^&]*&groep=0)?#", curPageURL())) {
    // it matches
}

式はあなたの[^&]*ように機能します*; to match non-empty items, use[^&]+`。これらに一致します:

http://www.example.com/pageexample
http://www.example.com/pageexample?start=30&groep=0

アップデート

複数のドメインが同じコードベースを指している場合を除いて、完全な正規URLと比較する必要がある理由は完全には明らかではありません。

于 2012-06-12T13:44:13.430 に答える
1

文字列比較関数を使用する必要があります

if (strstr(curPageURL(), 'http://www.example.com/')) !== FALSE) {
  // curPageURL() contains http://www.example.com/
}

また

if (preg_match('/^http\:\/\/www\.example\.com\//', curPageURL()) { 
  // curPageURL() starts with http://www.example.com/
}

それを行う方法はたくさんあります

于 2012-06-12T13:43:47.120 に答える
1

あなたはこれを包むことができます

elseif (curPageURL() == "http://www.example.com/pageexample" OR curPageURL() == "http://www.example.com/pageexample?start=*&groep=0") {

whileループでは、変数に30が追加され、各反復でワイルドカードが使用されます。

于 2012-06-12T13:43:52.090 に答える
0

$ _SERVER配列のquery_string要素を使用しない場合、ページ化されたすべてのURLは同じURLを返します:http://www.example.com/pageexample、で確認できます

echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] ;

vs

echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"].'?'.$_SERVER["QUERY_STRING"] ;

最初のケースでは、GETパラメータを受け取らないことがわかります

于 2012-06-12T13:45:43.523 に答える
0

正規表現を試しましたか?

if (preg_match('/http:\/\/www\.example\.com\/pageexample\?start=[0-9]+&groep\=0/i', "http://www.example.com/pageexample?start=34&groep=0")) {
   echo "A match was found.";
else {
   echo "A match was not found.";
}
于 2012-06-12T13:44:20.663 に答える