Разбить одну строку текста без каких-либо различимых точек останова в PHP

У меня есть функция PHP, чтобы ловить длинные URL-адреса и обрезать их, чтобы они не нарушали форматирование моего сайта. У меня есть предложение ломать слова, но я не могу остановить текст следующим образом:

'Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'

Как я могу остановить вход пользователя таким образом?

То, что я пробовал, работает, если присутствуют черточки (и я тоже старался ­ в некоторых функциях, но ни один из них не влияет на вышеизложенное. Это для форума, и это последний бит пользовательского ввода. Я не могу прекратить разбивать мой сайт! Заранее благодарны за Вашу помощь.

Related of "Разбить одну строку текста без каких-либо различимых точек останова в PHP"

wordwrap() будет разбивать длинные слова, если вы wordwrap() TRUE в качестве четвертого параметра:

 wordwrap( $very_long_string, 30, '<br />', TRUE ); 

Это приведет к разрыву до или до 30 символов. TRUE требуется принудительное прерывание длинных слов. Если используется FALSE (по умолчанию), строки разбиваются только на пробелы.

Вместо того, чтобы пытаться сломать слово в PHP, вы можете использовать CSS для стилизации страницы, чтобы она ломала длинные слова, когда они не вписываются в доступное пространство.

Стиль CSS для этого – word-wrap:break-word; ,

Примените это к элементу, который содержит длинный текст, и при необходимости он будет обертывать длинные слова.

Надеюсь, это поможет.

 <?php $string = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; echo chunk_split($string, $char_length = 50, $line_ending = "<br />"); ?> 

Вывод:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

В основном, что вы хотите сделать, это реализовать Markov Chain или Bloom Filter, чтобы попытаться определить «тарабарщину» как таковую.

Забудьте, где я получил это сейчас, но я использовал эту небольшую функцию:

echo contains_gibberish ("heiahihaiahheiah");

 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; } 

Это позволит вам помечать ввод как потенциально мусор, альтернативы включают обертывание текста и т. Д.