将 htmlspecialchars 转义字符转换回正则表达式
Regex to convert htmlspecialchars escaped characters back
我在我的网站上接受用户输入,并允许通过所见即所得的编辑器进行格式化。
现在我 运行 整个 post 我通过 htmlspecialchars 进入 PHP ENT_quotes.
从那里我想 运行 一个正则表达式将我允许的规则转换回真实 html。
所以
<p>TEXT</p>
谢谢!
变成
<p>TEXT</p>
有没有办法用正则表达式做到这一点?我不熟悉它。但是基本上是寻找转义标签并用真实标签替换它们,同时将所有内容都放在中间?
编辑:我希望正则表达式生成有效的 HTML 代码。首先,我 运行 通过 htmlspecialchars
实现 100% 安全并获取所有 < & > 字符的实体版本。然后我想要一个正则表达式只将我想要的标签转换回正常状态。我不想将所有实体解码回它们的常规状态,我只想解码我想要的标签。例如,正则表达式搜索 <p>TEXT</p>
返回 <p>TEXT</p>
- 我不想只重新转换 <
、&
、>
本身。我只想重新转换我想要的标签。在这个例子中是段落标签。
我觉得你需要html_entity_decode()
我认为这个正则表达式应该适用于您所描述的内容:
/<(\/?)(allowed_tags_here_seperated_by_|)>/
正则表达式演示:https://regex101.com/r/uX7cT1/1
PHP 演示:https://eval.in/579884
PHP 用法:
$allowed_tags = array('p', 'h1');
$regex = '/<(\/?)(' . implode('|', $allowed_tags) . ')>/';
$test_string = '<p>TEXT</p> This & that don\'t < decode > these though <h2> <h1> <p class="test">';
echo preg_replace($regex, '<>', $test_string);
哦,这还没有考虑自闭因素。 <br />
、<hr />
、<img stuff />
等
我在我的网站上接受用户输入,并允许通过所见即所得的编辑器进行格式化。
现在我 运行 整个 post 我通过 htmlspecialchars 进入 PHP ENT_quotes.
从那里我想 运行 一个正则表达式将我允许的规则转换回真实 html。
所以
<p>TEXT</p>
谢谢!
变成
<p>TEXT</p>
有没有办法用正则表达式做到这一点?我不熟悉它。但是基本上是寻找转义标签并用真实标签替换它们,同时将所有内容都放在中间?
编辑:我希望正则表达式生成有效的 HTML 代码。首先,我 运行 通过 htmlspecialchars
实现 100% 安全并获取所有 < & > 字符的实体版本。然后我想要一个正则表达式只将我想要的标签转换回正常状态。我不想将所有实体解码回它们的常规状态,我只想解码我想要的标签。例如,正则表达式搜索 <p>TEXT</p>
返回 <p>TEXT</p>
- 我不想只重新转换 <
、&
、>
本身。我只想重新转换我想要的标签。在这个例子中是段落标签。
我觉得你需要html_entity_decode()
我认为这个正则表达式应该适用于您所描述的内容:
/<(\/?)(allowed_tags_here_seperated_by_|)>/
正则表达式演示:https://regex101.com/r/uX7cT1/1
PHP 演示:https://eval.in/579884
PHP 用法:
$allowed_tags = array('p', 'h1');
$regex = '/<(\/?)(' . implode('|', $allowed_tags) . ')>/';
$test_string = '<p>TEXT</p> This & that don\'t < decode > these though <h2> <h1> <p class="test">';
echo preg_replace($regex, '<>', $test_string);
哦,这还没有考虑自闭因素。 <br />
、<hr />
、<img stuff />
等