我有一个PHP函数来捕获长URL并修剪它们,这样它们就不会破坏我网站的格式。我有wordwrap捕捉句子,但我无法阻止这样的文字:
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
我如何停止这样的用户输入?
如果有破折号,我尝试过的东西会工作(我在某些功能中也试过了­
)但没有一个影响上面的内容。这是一个论坛,这是用户输入的最后一点我不能停止破坏我的网站!感谢您的帮助。
答案 0 :(得分:3)
您可以使用CSS来设置页面的样式,使其在不适合可用空间时打破长词,而不是试图破坏PHP中的单词。
CSS样式为word-wrap:break-word;
。
将此应用于包含长文本的元素,并在必要时包装长字。
希望有所帮助。
答案 1 :(得分:2)
TRUE
作为第四个参数包含,则 wordwrap()
会分解长字:
wordwrap( $very_long_string, 30, '<br />', TRUE );
这将在30个字符或之前插入一个中断。 TRUE
需要强制中断长话。如果使用FALSE
(默认值),则仅在空格处断行。
答案 2 :(得分:1)
<?php
$string = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
echo chunk_split($string, $char_length = 50, $line_ending = "<br />");
?>
输出:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
答案 3 :(得分:1)
基本上你想要做的是实现马尔可夫链或布隆过滤器来试图识别“乱码”。
忘记我现在的位置,但我已经使用了这个小功能:
echo contains_gibberish(“heiahihaiaheiah”);
function contains_gibberish( $input )
{
$result = array();
for($i = 0; $i < strlen( $input ); $i++)
{
if ( isset( $result[ $input[ $i ] ] ) )
{
$result[ $input[ $i ] ]++;
} else {
$result[ $input[ $i ] ] = 1;
}
}
return ( max( $result ) / strlen( $input ) * 100 >= 33 ) ? true : false;
}
这将允许您将输入标记为可能的垃圾,替代方法包括包装文本等。