0

PHPの文字の左右を取り除く最良の方法は何でしょうか?私はそれを右に剥ぎ取っていますが、左を理解することはできません。ltrimを試しましたが、うまく機能しないようです。

$rawsubject = 'RE: [#4152] - Registration Issues';
$casenumber_param="]";
$casenumber_strip = strpos($rawsubject,$casenumber_param);
$casenumber = substr($rawsubject,0,$casenumber_strip);

現在の出力は次のとおりです。RE: [#4152

残っているものをすべて取り除く必要がある[#ので、残っているのは4152です。

4

3 に答える 3

4

これを行う方法はいくつかありますが、正規表現を使用するのがおそらく最善です。これは現在のコードとまったく同じように動作します。閉じ角かっこを見つけて、その直前にあるすべての連続する数字を分離します。

if (preg_match('/\d+(?=\])/', $rawsubject, $matches)) {
    $casenumber = $matches[0];
}

「角かっこで囲まれた数字をつかむ」など、より直接的なものを好む可能性が非常に高くなります。

if (preg_match('/\[#(\d+)\]/', $rawsubject, $matches)) {
    $casenumber = $matches[1];
}

実際の動作をご覧ください

于 2012-08-30T22:32:19.400 に答える
0

ltrimでそれらを取り除くには、次のように書く必要があります。

$rawsubject = ltrim($rawsubject, "RE:[# ");
于 2012-08-30T22:36:16.977 に答える
0

現在のコードの論理的な拡張は、反対側を行うことです。

$rawsubject = 'RE: [#4152] - Registration Issues';
$casenumber_start="#";
$casenumber_end="]";
$start = strpos($rawsubject,$casenumber_start)+1;
$end  = strpos($rawsubject,$casenumber_end);
$casenumber = substr($rawsubject,$start,$end-$start);

しかし、私は正規表現ベースのソリューションを使用します。

于 2012-08-30T22:33:13.657 に答える