をクエリ文字列を削除します。PHP - 私はPHP変数にこの文字列(サンプル)を持つフォントのURLから
@font-face {
src: url('../some-font.eot?v=4.6.3');
}
を私は.eotで検索する必要がありますか?すべての行に見つかった場合は、次のように置き換えます。
@font-face {
src: url('../some-font.eot');
}
ご協力いただければ幸いです。
をクエリ文字列を削除します。PHP - 私はPHP変数にこの文字列(サンプル)を持つフォントのURLから
@font-face {
src: url('../some-font.eot?v=4.6.3');
}
を私は.eotで検索する必要がありますか?すべての行に見つかった場合は、次のように置き換えます。
@font-face {
src: url('../some-font.eot');
}
ご協力いただければ幸いです。
ストレートフォワード\Q...\E
シーケンスを使用して:
\Q.eot?\E[^'")]+
これを.eot
に置き換え、a demo on regex101.comを参照してください。 \Q...\E
シーケンスでは、すべての文字がプレーンリテラルとして扱われるため、エスケープは必要ありません。
ここ幅広い正規表現のビット(それは最初?
にほとんど何でも一致します)が、これはあなたのパスの出発点を与える必要があります:
echo preg_replace("/^([^?]+).*/", "$1", "../some-font.eot?v=4.6.3");
プリント:
../some-font.eot
アンカーを削除し、ファイル全体を検索するコンテキストを追加したいと思うでしょう。たとえば、posi息を呑むように見える。
echo preg_replace("/(?<=src: url\(')([^?]+)[^']*?/", "$1", "src: url('../some-font.eot?v=4.6.3');");
プリント:
SRC:URL( '../一部-font.eot');
あなたの気に入っているURL(たとえば、コメント、content
のプロパティなどには触れないなど)を置き換えることができます。
ありがとうございましたAdam、Janのソリューションが解決しました。 –
文字列を検索し、次に閉じたカプセル化文字でないものをすべて検索します。
eot\?[^'"]+
正規表現デモ:https://regex101.com/r/SEPPHc/1/
PHPデモ:https://eval.in/761197
PHP:
$string = "@font-face {
src: url('../some-font.eot?v=4.6.3');
}";
echo preg_replace('/eot\?[^\'"]+/', 'eot', $string);
クリスおかげで、それは正常に動作します。一重引用符や二重引用符がない場合でも置き換える方法はありますか?サンプル:url(../ some-font.eot?v = 4.6.3); –
@EduardoSR何が一貫していて、いつも ')'で終わりますか?たぶんhttps://regex101.com/r/SEPPHc/2/ – chris85
はい、いつも。 'url( '../ some-font.eot?v = 4.6.3');'または 'url(" ../ some-font.eot?v = 4.6.3 ")'または'url(../ some-font.eot?v = 4.6.3)' –
ありがとうJanさん、あなたのソリューションは意図したとおりに動作します。一重引用符や二重引用符がない場合でも置き換える方法はありますか?サンプル:url(../ some-font.eot?v = 4.6.3); –
@EduardoSR:もちろん、デモを更新しました。文字クラスに別の ')'を追加するだけです。 – Jan
はい、それは働いています、ありがとうJan! –