I am trying to configure HTMLPurifier to only display external links as plain text. I used DisplayLinkURI option but it display all links as a plain text. is there any configuration for that? here is my code:
$mySite='<a href="http://www.mysite.com/">mysite</a>';
$externalSite='<a href="http://www.external.com/">external</a>';
require_once 'include/htmlpurifier/library/HTMLPurifier.auto.php';
$Config = HTMLPurifier_Config::createDefault();
$Config->set('AutoFormat.DisplayLinkURI', true);
$purifier = new HTMLPurifier($Config);
$mySite= $purifier->purify($mySite);
$externalSite=$purifier->purify($externalSite);
echo $mySite;
echo $externalSite;
The output is
<a>mysite</a> (http://www.mysite.com/)
<a>external</a> (http://www.external.com/)
I want the output to be like this:
<a href="http://www.mysite.com/">mysite</a>
<a>external</a> (http://www.external.com/)
Update:
I want to keep external links for images without change. I only need to convert hyperlinks to plain text.
Ok, I succeeded to add a custom injector to HTMLPurifier, here it is:
First, Create a “DisplayRemoteLinkURI.php” in “include\htmlpurifier\library\HTMLPurifier\Injector” and write this in it
And then create another file named “AutoFormat.DisplayRemoteLinkURI.txt” in “include\htmlpurifier\library\HTMLPurifier\ConfigSchema\schema” and add this :
After that, Add this line
under
in include\htmlpurifier\library\HTMLPurifier.includes.php
Then, Add this line
under
in include\htmlpurifier\library\HTMLPurifier.safe-includes.php
After these edits, if your files are at local, run cmd.exe and go to your php directory. Then run “include/HTMLPurifier/maintenance/generate-schema-cache.php” from php.exe.
Or if you want to do this via browser, rename your .htaccess file inside “include/HTMLPurifier/maintenance/” to something else for a while, then add this line inside “generate-schema-cache.php” on the first line after the
<?phptag;and then run this file from browser. After you see “Saving schema.. done!”, rename your .htaccess file back.
Then in your script, use “AutoFormat.DisplayRemoteLinkURI” as config, and voila!
Note that the is_remote() function inside the first file I gave here might be not so good, and I couldn’t find a script that checks if a link is remote or local, so you might alter it later if you need.