5

私は本当にこれに頭を悩ませてきました、私の人生に関しては、私は問題が何であるかを理解することができません。

正規表現を実行したいデータがいくつかあります。参考までに、元のドキュメントは、違いが生じる場合はiso-8859-15でエンコードされます。

正規表現を使用した関数は次のとおりです。

if(preg_match("{£\d+\.\d+}", $handle)) // 
{
    echo 'Found a match';

}
else
{
    echo 'No match found';
}

何をしようとしても、それを一致させることができないようです。£記号を検索してみました。正規表現を確認しましたが、問題はありません。ソースデータを正規表現テスターに​​直接貼り付けたところ、探しているものと完全に一致するものが見つかりました。正規表現が機能しない理由がわかりません。検索している文字列の生データを確認しましたが、£記号は日と同じくらい明確です。

エンコードされた文字が見えない感じがしますが、どのようにデータを出力しても、£記号しか見えませんが、なんらかの理由で認識されていません。

何か案は?文字列で生データを表示する絶対的な方法はありますか?var_dumpとvar_exportを試しましたが、var_exportは別の言語でデータを表示するため、何かが正しくないように感じます。変数に「本当に」あるものをどのように確認できますか?

コンテンツをtxtファイルに保存しました。£があります。正規表現で見つけられない理由はないはずです。わからない。文字列を作成して、正規表現が取得するテストの正確なビットに貼り付けると、問題なく一致するものが見つかります。

本当に困惑します。

4

2 に答える 2

4

いつでも文字を変換できます。

$string = '£100.00';
if(preg_match("/\xa3/",$string)){
    echo 'match found';
}else{
    echo 'no matches';
}
于 2012-11-25T20:25:45.440 に答える
2

16 進値がわかっている場合は、正規表現に任意の文字を含めることができます。値は0A3Hだと思うので、これを試してください:

 \xa3  // Updated with the correct hex value
于 2012-11-25T20:26:38.887 に答える