7

ltrim()すべての一致ではなく、一致の単一のインスタンスを削除するために使用する簡単な方法はありますか?

文字列の配列をループしているので、最初の一致(この場合は母音)のみを削除したいと思います。

ltrim($value, "aeiouyAEIOUY");

デフォルトの動作では、文字列aardvarkまたはAardvarkはにトリミングされます"rdvark"。結果を出したいのですが"ardvark"

私は決してltrimに縛られていませんが、それは最も近い組み込みのPHP関数のようでした。それはいいでしょうltrimrtrim、オプションのパラメータ「limit」があり、ただ言っています... :)

4

6 に答える 6

5

pregreplaceを使用するだけで制限オプションがあります

例えば

$value = preg_replace('/^[aeiouy]/i', '', $value, 1); 
于 2012-12-28T22:20:03.370 に答える
4

正規表現はおそらくやり過ぎですが、次のようになります。

$value = preg_replace('/^[aeiouy]/i', '', $value);

i大文字と小文字を区別しないことに注意してください。

于 2012-12-28T22:19:39.953 に答える
1

あなたがやろうとしていることをするためにあなたが行くことができるいくつかの方法があります。

おそらく最も簡単なのは、次のような正規表現の置換です。

$pattern = '/^[aeiouy]{1}/i';
$result = preg_replace($pattern, '', $original_string);
于 2012-12-28T22:21:21.977 に答える
1

これはおそらく最も効率的な方法です(したがって、私の正規表現の答えは無視してください):

if (strpos('aeiouyAEIOUY', $value[0]) !== false) $value = substr($value, 1);

または、

if (stripos('aeiouy', $value[0]) !== false) $value = substr($value, 1);
于 2012-12-28T22:25:33.817 に答える
1

あなたがltrim言う理由でこれを行うために使用することはできませんし、使用することもできませんstr_replace(これにも制限はありません)。正規表現を使用するのが最も簡単だと思います。

$value = preg_replace('/^[aeiouy]/i', '', $value);

ただし、本当にそれをしたくない場合は、部分文字列を使用できますが、ループ内の文字列内のこれらの文字列の位置を確認する必要があります。これは、このようなチェックを行うphp関数がないためです。知ってる。

于 2012-12-28T22:18:46.123 に答える
1

preg_replace次の機能を使用できます。

<?php
    $value = preg_replace('/^[aeiouy]/i', '', $value);
?>
于 2012-12-28T22:19:00.800 に答える