1

我需要一个 HTML 安全函数,它将内容的第一个字母更改为图像源。

因此,如果我的内容是:"Hello World!“输出将如下所示: "<img src="/images/letters/H.png" alt="H"/>ello"

我试过类似的东西:

$content = '<img src="/images/letters/'.$content[0].'.png" />'.substr($content, 1); 

但我听说这种方式对 HTML 不安全,因为<>.

4

3 回答 3

3
$content = '<img src="/images/letters/'.$content[0].'.png" />'.substr($content, 1); 

会工作得很好,它总是会被截断为 1 个字符,所以只要你在那个名为 _.png 或其他东西的目录中没有敏感文件,你就没事。为确保您的页面不会中断:

$alph = "abcdefghijklmnopqrstuvwxyz";
if (strpos($alph,$content[0])) {
    $content = '<img src="/images/letters/'.$content[0].'.png" />'.substr($content, 1);
}
于 2011-09-20T22:10:17.410 回答
3
$content = preg_replace("/^([a-z])/i","<img src=\"/images/letters/$1.png\" alt=\"$1\" />",$content);
于 2011-09-20T22:12:54.617 回答
0

您是否担心创建损坏的图像?怎么样:

$first_letter = $content[0];
// A <= $first_letter <= Z
if(('A' <= $first_letter ) && ($first_letter <= 'Z')) {
    $content = '<img src="/images/letters/' . $first_letter . '.png" />'.substr($content, 1); 
}
于 2011-09-20T22:11:23.937 回答