これが私のコードです:
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('/\/(+s)\//i','',$searchTerm);
/9j/
から削除しようとしてい$searchTerm
ます。
具体的には、スラッシュ、スペースのない一連の文字と整数、次にスラッシュです
私の表現について何が正しくないのですか?
$newTerm = preg_replace('#/[a-z0-9]+/#i', '', $searchTerm);
/
区切り文字を別のもの (私の例では) に置き換える#
と、特にパターンに文字が含まれている場合に読みやすくなります/
。別の区切り文字を使用すると、スラッシュをエスケープする必要がなくなります。
+s
で変更する必要があります.*
また、i
$newTerm = preg_replace('/\/(.*)\//', '', $searchTerm);
ここでテスト済み: http://regexpfiddle.com/
+s
正規表現で意味のあるものとしてどこから得たのかわかりません。
個人的にはこれをお勧めします:
$searchTerm = explode("/",$searchTerm,3)[2];
ただし、これは最新の PHP でのみ機能することに注意してください。古いバージョンの場合は、次のものが必要です。
$searchTerm = explode("/",$searchTerm,3);
$searchTerm = $searchTerm[2];
正規表現が必要な場合は、これを試してください:
$searchTerm = preg_replace("(^/[^/]+/)","",$searchTerm);
この正規表現は区切り文字として括弧を使用します (括弧を使用する場合、競合を避けるために何かをエスケープする必要はありません。それらは一致するペアになるためです)。文字列の先頭から開始し、スラッシュを探し、次にスラッシュ以外のものを探します。 、次に 2 番目のスラッシュで、すべて削除します。
別の区切り文字を試してください:
preg_replace('~/\w+/~','',$term);
これを試して:
preg_replace('#/.*/#', '', $searchTerm);
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('~^/\S+/~','',$searchTerm);