2012-01-29 7 views
3

私は、php ltrim関数を使って文字列からいくつかの最初の部分を取り除こうとしていました。それはコロンの後にi文字を得るまでうまく動作します:。コロンの後にiが見つかると、i文字は無視されます。私はそれがsubstrまたは他の方法で行うことができることを知っていますが、私はトリムでそれが起こっている理由を知りたいです。例えば。私はコロンの後に私を置く場合PHP ltrimの動作と文字リスト

ltrim('mailto:[email protected]','mailto:'); 

上記の機能は、この1つは

[email protected]返します
ltrim('mailto:[email protected]','mailto:'); 

例えば

...

[email protected]返されますが、

何が起こっているのか誰でも説明できますか?

答えて

7

ltrimの2番目の引数は、文字列の左側から削除する文字のリストです。

あなたは

<?php 
    ltrim('lllliiiiaaaaaatttttt', 'mailto:'); 
?> 

をした場合は、戻り値として空の文字列を取得します。

代わりにこれを試してみてください:

<?php 
    $email = 'mailto:[email protected]'; 
    $fixedEmail = substr($email, 0, 7) == 'mailto:' ? substr($email, 7) : $email; 
?> 
+0

グレート答えが、一般的に私の代わりに、関数にpreg_replaceを使用し、あなたは単純にしようとします。 – Lake

0

はLTRIM()は、一致しない文字が見つかるまで、それは左から与えられたすべての文字をトリミングすることを動作が異なります。したがって、電子メールアドレスにコロンの後ろに "i"を付けると、最初に一致しない文字は "n"なので、その前にあるすべての文字が切り詰められます。 「MAILTO:」をあなたの意図は削除する場合

str_replace('mailto:', '', 'mailto:[email protected]'); 
+0

これは必ずしも良いことではありません。例えば、 'Dr manDrake Dracula'からDrを削除したい場合、' str_replace( 'Dr'、 ''、 '')を実行すれば 'manake acula'を返します。 Dr mandrake Dracula '); ' – Gogol