1
に掲載される前に、nofollowをなどへのすべてのリンクを変更しようとしました。私が試したは、私は彼らが私は彼らがMySQLのDBに掲載される前などをnofollowをするためにPHPの文字列内のすべてのリンクを変更しようとしたデシベル
どちらの行は動作しませんでした:
$group_description = preg_replace('/\b<a href="\b/', '<a rel="nofollow" href="/out/out.php?url=', $group_description);
$group_description = str_replace('<a href="', '<a rel="nofollow" href="/out/out.php?url=', $group_description);
内の両方の結果:
$html = '<a href="/foo">foo</a> <a href="/bar">bar</a>';
$dom = new DomDocument();
$dom->loadHTML($html);
$as = $dom->getElementsByTagName('a');
foreach($as as $a) {
$a->setAttribute('rel', 'nofollow');
$a->setAttribute('href', '/out/out.php?url=' . rawurlencode($a->getAttribute('href')));
}
$out = simplexml_import_dom($dom->getElementsByTagName('body')->item(0))->asXML();
$out = preg_replace('#<body>(.*)</body>#', "$1", $out);
echo $out;
私は興奮していないよ:あなたはこれを行うにはDomDocumentを使用することができます<a href="%5C%22http://www.website.net%5C%22">keyword</a>
「うまくいかない」とはどういう意味ですか? – jprofitt
1.データをデータベースに移動させないでください。途中でそれを混乱させる。 (パフォーマンスが必要な場合は、キャッシュ列を保持してください)。 – Quentin
2. [正規表現](http://stackoverflow.com/a/1732454/19068)でHTMLを解析しようとしないでください! (特に、非常に標準的なテンプレートに適合するHTMLではない場合)。 – Quentin