からすべての属性と属性preg_replace
をクリアし、それらを他の値に置き換える必要がある関数を使用します。ここにあります:rel
target
$body
$patterns = array();
$patterns[] = '/<a(.*) rel="([^"]*)"(.*)>/';
$patterns[] = '/<a(.*) target="([^"]*)"(.*)>/';
$patterns[] = '/<a(.*)>/';
$replacements = array();
$replacements[] = '<a$1$3>';
$replacements[] = '<a$1$3>';
$replacements[] = '<a rel="nofollow" target="_blank"$1>';
$body = preg_replace($patterns,$replacements,$body);
問題は、単一引用符と引用符なしが一致しないことです。rel
また、リンクから属性と属性をクリアして他の属性と設定するためのより良いアプローチがある場合はtarget
、アドバイスしてください。
ありがとう
編集$body
::
$body = '<a href="TEST">Link1</a>
<a href="TEST" rel=\'lqlqlq\'>Link2</a>
<a href="TEST" target="_blank" rel="lqlqlq">Link3</a>
<a href="TEST" target=_blank rel=lqlqlq>Link4</a>';
また、テキストによるリンクを機能させるための他のすべてのオプションはユーザー定義であり、おそらく一部のユーザーはごまかそうとしています。私の目標-ユーザーが何を入力したかに関係なく、すべてのリンク$body
が定義されrel
、属性を持つようになります。target