5

多くのアンダースコアの後に単語が続く文字列があります。例: " Field_4_txtbox" 文字列の最後のアンダースコアを見つけて、それに続くすべてのもの ("_" を含む) を削除する必要があるため、" Field_4" が返されますが、これが必要です。さまざまな長さの末尾の文字列で機能します。そのため、固定長をトリミングすることはできません。

次のような特定のエンディングをチェックする If ステートメントを実行できることはわかっています。

if(strstr($key,'chkbox')) {
    $string= rtrim($key, '_chkbox');
}

しかし、これを正規表現パターンで一度に実行したいのですが、どうすればこれを達成できますか?

4

3 に答える 3

11

一致する正規表現は次のようになります。

/_[^_]*$/

それを「」に置き換えるだけです:

preg_replace( '/_[^_]*$/', '', your_string );
于 2013-05-28T23:14:04.687 に答える
2

次を使用することもできますexplode()

$string = 'Field_4_txtbox';
$temp = explode('_', strrev($string), 2);
$string = strrev($temp[1]);
echo $string;

PHP 5.4 以降

$string = 'Field_4_txtbox';
$string = strrev(explode('_', strrev($string), 2)[1]);
echo $string;
于 2013-05-28T23:31:52.670 に答える