今日、正規表現の検索に関連するコードをテストしていたときに、エラーを見つけました
エラーメッセージは次のとおりです:
警告: preg_match_all(): コンパイルに失敗しました: 後読みアサーションがオフセットで固定長ではありません
コードは次のとおりです:
- $str='
info strong';
- preg_match_all('/(?<=<( w+)[ ^>]*>).*(?=1>)/',$str,$match);
- var_dump($match);
コードをコピー
実行上記のコード オンラインで確認すると、PHP の逆引き (reversepositive lookaround?<=exp、reverse negative lookaround?
上記のコードを次のように変更します:
- $str='
info strong';
- preg_match_all('/(?<=< ( w)>).*(?=1>)/',$str,$match);
- var_dump($match);
コードをコピー
ただし、これは b の強力なコンテンツにのみ一致しますタグ内
実際には、照合するために周りを探す必要はなく、グループ化を直接使用して、返された結果をフィルターするだけで済みます
- $str='
info strong b>';
- preg_match_all('/(<(w+)[^>]*>)(.*)(2>)/',$str,$ match);
- print_r( $match[3]);//Array ( [0] => info [1] => Strong )
コードをコピー
|