2010-11-22 7 views
0

私は、文字列を持っている:単純なPHPの正規表現の質問

$uri = "start/test/go/"; 

基本的に私は、私はスラッシュ(「/」)で最初の項目を一致させるために使用し、それを削除することができた正規表現とPHP関数知っている必要があります文字列から。また、最初の項目が開始されていない場合にも機能するはずです。 だから、これらすべての組み合わせが動作するはずです:ああ、文字列の反対側も同様に何もすることができ

$newUri = "test/go/"; 

、だから、基本的に私はそれをしたい:

$uri = "start_my_test/test/go/"; 
$uri2 = "start my test/test/go/"; 

を次に正規表現の後には必ず返す必要がありますスラッシュが最初に出現する前に何かを削除する。

乾杯

答えて

0
$result = preg_replace('/^[^\/]*\//' , '', $subject); 

これは、その後\/スラッシュ単一の順方向と一致し、[^\/]*「スラッシュでない任意の数の文字に一致する」、^「文字列の先頭から開始」と言う - と"一致したものすべてを何もなく置き換える" ''

+0

strpossubstrを使用し、あなたの答えが正しいと作品です。しかし、パフォーマンスが賢明ではない正規表現の答えはより実現可能です。 –

+0

さて、パフォーマンスの違いは非常に小さいです。数十万回連続して実行しない限り、誰も気付かない処理サイクルがいくつかあります。したがって、コードの明瞭性、保守性、および文体の選択肢が得られます。コードの明確さの点では、 'strstr'はこの問題のより良い解決策かもしれませんが、私は個人的に使い慣れて読みやすいので、書式的には正規表現を好む傾向があります。 –

4

strstrを使用して、phpで文字列が最初に出現する箇所を探します。

それ自体では、文字列の残りの部分を返す必要があります。

see here

+0

文字列を完全に削除するには、最初に左上のスラッシュを削除するためにstrstrの周りにsubstrを追加する必要がありました。例えばsubstr(strstr($ uri、 "/")、1); –

0

正規表現は、あなたが必要なもののためにあまりにも高価な操作です。これは正規表現疑問だったので代わりに

$position = strpos($needle, $haystack); 
if ($position !== false) { 
    $result = substr($needle, $position + 1); 
}