0 レビュー
2 回答
php-正規表現にはポジティブルックビハインドの問題があります
現在、HTMLタグから不要な引用符を削除する正規表現を作成しようとしています。正規表現はPHPコードで使用されます。
<input type="image" src="/flags/en.png" alt="English" title="English" name="en" class="screen selected" />
に変換
<input type=image src="/flags/en.png" alt=English title=English name=en class="screen selected" />
この正規表現と置換を思いついた:
/(?<=<(?:[^>]+?\s)?)([\w-]+=)"([\w-]+)"(?=(?:\s[^>]+)?>)/g
$1$2
問題は、ポジティブルックビハインドでは量指定子が許可されないことです(参照として http://regex101.com/ を参照してください)。
それで、私はこのようにパターンを少し変更すると思いました:
/(<(?:[^>]+?\s)?)([\w-]+=)"([\w-]+)"((?:\s[^>]+)?>)/g
$1$2$3$4
現在は有効ですが、各タグから1セットの引用符のみが削除されます。
これを達成するにはどうすればよいですか?
わからない
0
レビュー
答え :
解決策:
次のことを試してください:
$pattern = '/(<(?:[^>]+?\s)?)([\w-]+=)"([\w-]+)"((?:\s[^>]+)?>)/';
$replacement = '$1$2$3$4';
$subject = '<input type="image" src="/flags/en.png" alt="English" title="English" name="en" class="screen selected" />';
while(preg_match($pattern, $subject)){
$subject = preg_replace($pattern, $replacement, $subject);
}
var_dump($subject);
わからない
0
レビュー
答え :
解決策:
おそらくそれほど節約にはなりませんが、ここに行きます:)
$string = '<input type="image" src="/flags/en.png" alt="English" title="English" name="en" class="screen selected" />';
echo preg_replace('/="([a-z]+)"/i', '=$1', $string);
出力:
<input type=image src="/flags/en.png" alt=English title=English name=en class="screen selected" />
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。