PHP делает первую букву изображения - PullRequest
1 голос
/ 21 сентября 2011

Мне нужна HTML-безопасная функция, которая изменит первую букву содержимого на источник изображения.

Поэтому, если мой контент будет: "Hello World! ", результат будет выглядеть так: "<img src="/images/letters/H.png" alt="H"/>ello"

Я пробовал что-то вроде:

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

Но я слышал, что этот способ небезопасен для HTML из-за таких символов, как < и >.

Ответы [ 3 ]

3 голосов
/ 21 сентября 2011
$content = preg_replace("/^([a-z])/i","<img src=\"/images/letters/$1.png\" alt=\"$1\" />",$content);
3 голосов
/ 21 сентября 2011
$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);
}
0 голосов
/ 21 сентября 2011

Вы беспокоитесь о создании испорченного изображения? Как насчет:

$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); 
}
...