HTML中的文本链接纯化

时间:2015-07-10 12:14:19

标签: php htmlpurifier

我在文字中有一个链接:

$config = HTMLPurifier_Config::createDefault();
$config->set('URI.MakeAbsolute', false);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
$config->set('URI.AllowedSchemes',
        array (
                    'http' => true,
                    'https' => true,
                    'mailto' => true
                ));
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
$def->addAttribute('a', 'data-width', 'Text');
$def->addAttribute('a', 'data-height', 'Text');
$def->addAttribute('a', 'id', 'Text');
$def->addAttribute('a', 'name', 'Text');
$purifier = new HTMLPurifier($config);
$va = $purifier->purify($va);

用这个净化时:

       <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

        <GridView android:id="@+id/customer_list"
            style="@style/Widget.SampleDashboard.Grid"
            android:layout_width="match_parent"
            android:layout_marginTop="10dp"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:paddingLeft="@dimen/horizontal_page_margin"
            android:paddingRight="@dimen/horizontal_page_margin"
            android:paddingBottom="@dimen/vertical_page_margin"
            android:scrollbarStyle="outsideOverlay" />

      </LinearLayout>
  </ScrollView>

净化替换字符&amp; &lt;的链接我怎么能阻止这个?

2 个答案:

答案 0 :(得分:2)

当我运行您的代码时,我得到了所需的结果:

<?php
ini_set('display_errors', TRUE);
error_reporting(E_ALL);

include_once 'library/HTMLPurifier.auto.php';

$raw = 'Some text http://www.stackoverflow.com?var=1&var2=2 more text';

$config = HTMLPurifier_Config::createDefault();
$config->set('URI.MakeAbsolute', false);
$config->set('HTML.SafeObject', true);
$config->set('Output.FlashCompat', true);
$config->set('URI.AllowedSchemes',
        array (
                    'http' => true,
                    'https' => true,
                    'mailto' => true
                ));
$def = $config->getHTMLDefinition(true);
$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
$def->addAttribute('a', 'data-width', 'Text');
$def->addAttribute('a', 'data-height', 'Text');
$def->addAttribute('a', 'id', 'Text');
$def->addAttribute('a', 'name', 'Text');
$purifier = new HTMLPurifier($config);

echo $purifier->purify($raw);

我得到了

Some text http://www.stackoverflow.com?var=1&amp;var2=2 more text

请注意,&符号已正确转义。它必须是代码中其他地方的错误。

答案 1 :(得分:0)

我没有使用这个库,但是我很好奇你为链接定义了($ def)并且从未在净化器上设置它。

将&#34;&lt;&#34;从我的角度来看,角色不是正确的解决方案。如果以正确的方式配置,它应该由净化器处理。