1

私は、次の形式のわかりやすい URL パスを使用して PHP で作業しています。

/2011/09/here-is-the-title
/2011/09/here-is-the-title/2

これらの URL パスを標準化して、スラッシュ自体を含む 4 つのスラッシュの後のすべてを削除する必要があります。4 番目のスラッシュの後の値は数値の場合もありますが、任意のパラメーターにすることもできます。

どうすればこれを行うことができるかについて何か考えはありますか? 正規表現で処理できると思いますが、ひどいです。strposまた、 と の組み合わせで処理できるかもしれないと思ったのですがsubstr、よくわかりません。

4

4 に答える 4

4

関数を使用できexplode()ます:

$parts  = explode('/', '/2011/09/here-is-the-title/2');
$output = implode('/', array_slice($parts, 0, 4));
于 2012-01-09T15:32:10.753 に答える
2

正規表現の実装が任意の長さの後読みアサーションをサポートしている場合は、置き換えることができます

(?<=^[^/]*(/[^/]*){3})/.*$

空の文字列で。そうでない場合は、交換できます

 ^([^/]*(?:/[^/]*){3})/.*$

最初のキャプチャ グループの内容で。2 番目の PHP の例は、ideone.comにあります。

于 2012-01-09T15:31:55.133 に答える
2

交換

%^((/[^/]*){3}).*%g

1ドルで。

実際の例については、http://regexr.com?2vlr8を参照してください

于 2012-01-09T15:34:12.767 に答える
1

ループを使用することもできます。

result="";
for char c in URL:
    if(c is a slash) count++;
    if(count<4) result=result+c;
    else break;
于 2012-01-09T15:35:31.067 に答える