Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用htmlspecialchars,但允许<;a href=";URL"></a>;_Php - Fatal编程技术网

Php 使用htmlspecialchars,但允许<;a href=";URL"></a>;

Php 使用htmlspecialchars,但允许<;a href=";URL"></a>;,php,Php,使用htmlspecialchars,但允许 额外的空格也应该有效,比如

使用htmlspecialchars,但允许

额外的空格也应该有效,比如


现在我可能需要
$pureHTML
上的
preg\u replace
,但是
preg\u replace
应该是什么?或者你推荐使用

我想只允许href属性使用锚定标记对。单击后,不允许使用目标属性。

我认为您需要函数

$pureHTML =  strip_tags($html, '<a>');
$pureHTML=strip_标记($html,”);
我认为您需要功能

$pureHTML =  strip_tags($html, '<a>');
$pureHTML=strip_标记($html,”);

我不确定您是否可以在一次替换中获得此功能,因为您必须匹配并替换“',$pureHTML);

基本上,它匹配转义形式的
()
,允许每个部分之间留有空格(“p>我不确定您是否可以在一次替换中得到它,因为您必须匹配并替换“,$pureHTML”);
基本上,它匹配转义形式的
()
,允许每个部分之间有空格(也包括你需要使用正则表达式,因为你没有正确地框定你的问题。他希望htmlspecialchars是一个字符串,但不让锚点被转义。好的,我编辑了我的问题,再多一些信息…或者单词会有用。你需要使用正则表达式没有正确地框定你的问题。他想要htmlspecialchars一个字符串,但要防止锚点被转义。好的,我已经编辑了我的问题
$pureHTML = htmlspecialchars($dirtyHTML, ENT_NOQUOTES);
preg_match_all('/(&lt;\s*a)\s*(\w+="[\w:\/@#%_\-&\.]+")\s*(&gt;)/i', $pureHTML, $matches, PREG_SET_ORDER);
foreach($matches as $match) {
    $pureHTML = str_replace($match[0], "<a " . $match[2] . ">", $pureHTML);
}
$pureHTML = preg_replace('/(&lt;\/\s*a\s*&gt;)/i', '</a>', $pureHTML);