1

これが私のURLです:

http://www.mywebsite.com/local/cityname-free-services

私は使っている

$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper($check);
echo $check;

都市名を取得して大文字にします。ただし、エコーすると、次のようになります。

CITYNAME-FREE-SERVICES

私がエコーしたいのはこれだけです:

CITYNAME

都市名を取得するには、コードで何を変更する必要がありますか?

また、一部の都市名にはダッシュが含まれており、エコー時に空白に置き換える必要があります。そのために何を追加する必要がありますか?ありがとう!

4

4 に答える 4

2

いくつかある方法の 1 つ。ここの誰かがおそらくより良い仕事をするいくつかの正規表現を示すでしょうが、これは「無料サービス」を削除し、ダッシュをスペースに置き換えます:

$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper(str_ireplace("free-services", "", $check));
echo str_replace("-", " ", $check);
于 2012-11-24T22:48:21.130 に答える
1

結果の文字列を再び爆発さ-せ、最初の要素を保持したい場合、次の行に沿った何か

$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = current(explode('-', strtoupper($check)));
echo $check;

このようにして、最後の部分が変更された場合でも、CITYNAME有効なままになります。

いくつかの詳細な説明explode(ドキュメントはこちら) は、文字列を配列要素に分割し、最初のパラメーターを使用して分割します。この場合、渡すと、-3 つの要素を持つ配列が作成されます。(ドキュメントはこちら) は配列内の現在の位置を取得し、この値を返します。デフォルトでは、現在の位置は最初の要素にあります。配列内の個々の要素にインデックスを付けることもできるため、 、および を使用すると、 およびが得られます。CITYNAMEFREESERVICEScurrentexplode('-', strtoupper($check))[0]CITYNAME[1][2]FREESERVICES

編集:都市名のダッシュ部分が表示されませんでした。URL には削除したい他のダッシュが含まれているため、これは問題を少し複雑にします。「-FREE-SERVICES」が定数であり、それが常に削除したい部分である場合、cale_b が提案したことを実行することをお勧め"free-services"""ます。だから私は彼の答えを+1しています。

編集 2:何らかの理由で私の答えが選ばれました。ダッシュを含む名前の場合は、cale_b が提案したのと同様のことを行う必要があります!

于 2012-11-24T22:49:53.130 に答える
0
$url = 'http://www.mywebsite.com/local/cityname-free-services';
$check = end(explode('/local/',$url));
$check = strtoupper($check);
echo $check; // prints CITYNAME-FREE-SERVICES
echo '<br>';
$first_element = strtoupper(str_ireplace(array("-free-services","-"),array(""," "),$check));
echo $first_element; // prints CITYNAME
于 2012-11-24T22:49:33.973 に答える
0
$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper($check);
$check = explode("-", $check);
echo $check[0];
于 2012-11-24T22:51:19.223 に答える