html形式のテキストを受け取ります。アンカータグのURLを私のドメインからのみに制限したいのですが、古いリンクを "xxx"(またはsmth 'else)に置き換えてください。
入力:「<a href='otherdomain'>text</a>
」
出力:「XXX」
私は一種のここにこだわって、このかかわらを達成するために正規表現を使用しています:正規表現他のドメインへのリンクを削除する
$pattern ='/<a.*href=[\'|\"]http.?:\/\/[^mydomain.*\"\']*[\'|\"].*<\/a>/i';
$replace ='xxx';
echo preg_replace($pattern, $replace, $string);
ここで何が悪いのでしょうか?
あなたが浄化したい場合は、不在の属性引用やHTMLエンティティマスカレードを処理する必要があります。したがって、正規表現は一般的なケースだけを捕捉します。それは信頼できるフィルタとしては適していません。 (無駄な努力なしで)。 – mario
[PHPでHTMLを解析し処理する方法]の可能な複製?(http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with- PHPを – Gordon
@Gordon:タグをすでにフィルタを通過した文字列の一部として受け取ったので、解析するのは簡単ではないと思います。 – lvil