2017-02-14 8 views
2

私はこのPHPを使い始めましたが、この問題を発見しました。 PHPで唯一の正規表現を使用して、最初のバックスラッシュとそれの終わりから(この場合は/index.php中):PHPで正規表現を使って文字列を削除するには?

442_38489_ext/index.php 

は、私は、文字列の一部を削除したい:私は、この文字列を持っています。

これを行う方法はありますか?私はこのコードを試しましたが、何もしません:

preg_replace("/\/(.+?)$/", '', $something_not_important); 

私の間違いはどこにありますか?私のために完全に罰金

+0

どうしてうまくいかなかったのですか? '$ new_str = preg_replace(" /\/(.+?)$/ "、 ''、$ something_not_important);'。しかし、正規表現を使った方が良い選択肢は ''〜/ [^ /] * $〜 ''です。 'dirname($ s)'はどうでしょうか? –

+0

誰もあなたを憎むことはありません:-)ようこそ! – arkascha

+0

Wiktor、変更された文字列を含む変数を出力しようとすると、何も表示されませんでした。 arkasha、ありがとう! :) –

答えて

0

あなたの具体的なケースのためのdirnameを使用するか、または'~/[^/]*$~'のような正規表現を使用することがあります。

$something_not_important = "/more_here/442_38489_ext/index.php"; 
$s2 = dirname($something_not_important); 
echo $s2 . "\n"; 

$s3 = preg_replace("~/[^/]*$~", '', $something_not_important); 
echo $s3; 

PHP demo

/[^/]*$パターンが0+そして、まで/以外の文字を/に一致するを参照してください。文字列の最後($)。

また、値を変数に割り当てることを忘れないでください。そうしないと、変数が更新されません。

0

作品...

<?php 
$something_not_important = '442_38489_ext/index.php'; 
$something_changed = preg_replace("/\/(.+?)$/", '', $something_not_important); 
var_dump($something_changed); 

上記のコードの出力は次のようになります。

string(13) "442_38489_ext" 

はたぶん、あなたはpreg_replace()への呼び出しの戻り値を代入しませんでしたか?

+0

現在の問題正規表現では、文字列の中に1つ以上の文字がある場合、複数の '/'を削除するということです。 –

+0

問題は既に解決されていますが、回答してくれてありがとう! –

関連する問題