I am using HTML purifier to remove all unnecessary/malicious html tags.
$html = 'dirty html provided by user';
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', 'p,a[href], ... other tags);
$purifier = new HTMLPurifier($config);;
$output = $purifier->purify($html);
It works really nice, but I want to do a little bit more. I want to change all my <a href='link'>...</a>
to something else like <a href='somefunc(link)' rel="nofollow" target="_blank"> ... </a>
.
After searching for a little bit, I found the following relevant link, but the problem is that it requires patching a complex library (which is not really a good idea, also the solution is kind of complicated).
Reading through their forum post, it looks like there is solution for adding nofollow parameter is $config->set("HTML.Nofollow", true);
, but I still fail to find how can modify every link.
My current solution is to parse purified html by myself and to modify a link, but I think that there is a way to do this through HTML Purifier
.
Actually I found partial solution on one of the links on the forum.
This is what I need to do:
$config->set('HTML.Nofollow', true);
$config->set('HTML.TargetBlank', true);
So the full thing looks like this:
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Nofollow', true);
$config->set('HTML.TargetBlank', true);
$config->set('HTML.Allowed', 'a,b,strong,i,em,u');
$purifier = new HTMLPurifier($config);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With