hello
を含み、English
で終わるすべてのファイル名を検索する方法.apk
。
hello
現在、を含み、で終わるファイル名を検索するために使用する正規表現があります.apk
。
preg_match('/.*hello.*\.apk$/i', $filename);
hello
を含み、English
で終わるすべてのファイル名を検索する方法.apk
。
hello
現在、を含み、で終わるファイル名を検索するために使用する正規表現があります.apk
。
preg_match('/.*hello.*\.apk$/i', $filename);
正規表現でそれを行うことはできますが、最終的には醜い/複雑な/判読できない表現になります。代わりに、論理演算子と一緒に結合されたより単純な条件の組み合わせを使用します。
if (strpos($filename, 'hello') !== 0 && strpos($filename, 'English') !== 0 && substr($filename, -4) === '.apk') {
// filename matches
}
PHPには、上記のコードのようなcontains()
、またはstarts|endsWith()
上記のコードを少し醜いものにする標準の文字列関数がありませんが、ヘルパー、ユーティリティクラスの作成を妨げるものは何もありません。
class StringHelper {
private $subject;
public function __construct($subject) {
$this->subject = $subject;
}
public function contains($substring) {
return strpos($this->subject, $substring) !== false;
}
public function endsWith($string) {
return substr($this->subject, strlen($string) * -1) === $string;
}
}
その後、あなたif
はさらに簡単になります:
$filename = new StringHelper($filename);
if ($filename->contains('hello') && $filename->contains('English') && $filename->endsWith('.apk')) {
// matches
}
ヒント:オブジェクトを作成する代わりに、最初の引数として受け入れる一連の静的メソッドを持つStringHelper
「クラシック」クラスを使用できます。StringUtilis
$string
ヒント: StringHelper::contains()
文字列の配列を受け入れて、文字列にすべてまたは少なくとも1つが含まれているかどうかを確認できます(2番目の引数で指定されたフラグの種類によって異なります)。
ファイル名に「hello」または「English」が必要な場合は、この正規表現でうまくいくはずです。
/.*(hello|English).*\.apk$/
「英語」が「こんにちは」の後に来る必要がある場合:
if(preg_match('/.*hello.*English.*\.apk$/i', $filename));
それらが任意の順序である可能性がある場合:
if(preg_match('/(hello.*English|English.*hello).*\.apk$/i', $filename));