だから私は興味深い問題を抱えています: 私は文字列を持っています.
http://www.someurl.com/st= ????????
この場合を除き、? は大文字または数字です。問題は、文字列にガベージが混在していることです。文字列は 5 つまたは 6 つの部分に分割されており、その間に多くのがらくたがあります: 印刷できない文字、外国の文字、および単純な古い通常の文字。要するに、次のようになりがちなもの: Nyþ=mî;ëMÝ×nüqÏ
通常、最後の 8 文字 (?) は最後にまとめられるので、現時点では PHP に最後の 8 文字を取得させて、最善を尽くすようにしています。時々、それがうまくいかないので、より堅牢なソリューションが必要です。
問題は技術的に解決できませんが、最善の解決策は文字列の末尾から大文字または数字を取得することだと思います。8 つ以上出たら、それが正しいと仮定します。それ以外の場合は、 st= を見つけて、8 文字のクォータを満たすのに必要な数だけ文字を取得します。これを行う正規表現の方法はありますか、それとも袖をまくり上げてネストループスタイルにする必要がありますか?
アップデート:
混乱を解消するために、次のような入力文字列を取得します。
[garbage]http:/[garbage]/somewe[garbage]bsite.co[garbage]m/something=[garbage]????????
ただし、ガベージは文字列内の予測できない場所にあり (最後がガベージではないことを除いて)、予測できない長さです (少なくとも、どちらにもパターンを見つけることができませんでした)。通常、?s はすべて一緒なので、最後の 8 文字を取得するだけですが、データが欠落してガベージが返されることがあります:-\