Подтвердить что ты не робот

Вырезать HTML и специальные символы

Я хотел бы использовать любую php-функцию или что-то еще, чтобы я мог удалить любой код HTML и специальные символы и дал мне только буквенно-цифровой вывод

$des = "Hello world)<b> (*&^%$#@! it me: and; love you.<p>";

Я хочу, чтобы выход стал Hello world it s me and love you (просто Aa-Zz-0-9-WhiteSpace)

Я пробовал strip_tags, но удаляет только HTML-коды

$clear = strip_tags($des); echo $clear;

так есть ли способ сделать это ~ Спасибо

4b9b3361

Ответ 1

Вероятно, лучше для замены регулярного выражения

// Strip HTML Tags
$clear = strip_tags($des);
// Clean up things like &amp;
$clear = html_entity_decode($clear);
// Strip out any url-encoded stuff
$clear = urldecode($clear);
// Replace non-AlNum characters with space
$clear = preg_replace('/[^A-Za-z0-9]/', ' ', $clear);
// Replace Multiple spaces with single space
$clear = preg_replace('/ +/', ' ', $clear);
// Trim the string of leading/trailing space
$clear = trim($clear);

Или, за один раз

$clear = trim(preg_replace('/ +/', ' ', preg_replace('/[^A-Za-z0-9 ]/', ' ', urldecode(html_entity_decode(strip_tags($des))))));

Ответ 2

Разделите теги, оставьте только буквенно-цифровые символы и пробелы:

$clear = preg_replace('/[^a-zA-Z0-9\s]/', '', strip_tags($des));

Изменить: все кредиты DaveRandom для идеального решения...

$clear = preg_replace('/[^a-zA-Z0-9\s]/', '', strip_tags(html_entity_decode($des)));

Ответ 3

Более подробно из приведенного выше примера. Ниже рассматривается ваша строка:

$string = '<div>This..</div> <a>is<a/> <strong>hello</strong> <i>world</i> ! هذا هو مرحبا العالم! [email protected]#$%^&&**(*)<>?:";p[]"/.,\|`[email protected]#$%^&^&*(()908978867564564534423412313`1`` "Arabic Text نص عربي test 123 و,.m,............ ~~~ ٍ،]ٍْ}~ِ]ٍ}"; ';

код:

echo preg_replace('/[^A-Za-z0-9 [email protected]#$%^&*().]/u','', strip_tags($string));

Allows: Английские буквы (Столица и малые), от 0 до 9 и символы [email protected]#$%^&*().

Removes: Все теги html и специальные символы, кроме выше

Ответ 4

Вы можете сделать это в одной строке:) особенно полезно для запросов GET или POST

$clear = preg_replace('/[^A-Za-z0-9\-]/', '', urldecode($_GET['id']));

Ответ 5

Здесь функция, которую я использовал, я собрал из разных потоков в сети, которая удаляет все, все теги и оставляет вас с идеальной фразой. Кто-нибудь знает, как изменить этот script, чтобы разрешить периоды (.)? Другими словами, оставьте все "как есть", но оставьте периоды в одиночку или другие знаки препинания, как и! или запятой? дайте мне знать.

function stripAlpha( $item )

{

    $search     = array( 
         '@<script[^>]*?>.*?</script>@si'   // Strip out javascript 
        ,'@<style[^>]*?>.*?</style>@siU'    // Strip style tags properly 
        ,'@<[\/\!]*?[^<>]*?>@si'            // Strip out HTML tags
        ,'@<![\s\S]*?–[ \t\n\r]*>@'         // Strip multi-line comments including CDATA
        ,'/\s{2,}/'
        ,'/(\s){2,}/'

    );

    $pattern    = array(

         '#[^a-zA-Z ]#'                     // Non alpha characters
        ,'/\s+/'                            // More than one whitespace

    );

    $replace    = array(
         ''
        ,' '

    );

    $item = preg_replace( $search, '', html_entity_decode( $item ) );
    $item = trim( preg_replace( $pattern, $replace, strip_tags( $item ) ) );
    return $item;

}

Ответ 6

Все другие решения жуткие, потому что они от кого-то, кто высокомерно просто думает, что английский язык является единственным языком в мире:)

Все эти решения разрешают также диакритические знаки, такие как ç или à.

Идеальное решение, как указано в документации PHP, просто:

$clear = strip_tags($des);

Ответ 7

чтобы периоды и любой другой символ просто добавляли их так:

change: '#[^a-zA-Z ]#' для: '#[^a-zA-Z .()!]#

Ответ 8

preg_replace('/[^a-zA-Z0-9\s]/', '',$string) Это используется для удаления только специального символа, а не пробела между строками.

Ответ 9

Удалить все специальные символы не дают пробелу в одной строке

trim(preg_replace('/ +/', ' ', preg_replace('/[^A-Za-z0-9 ]/', ' ', 
urldecode(html_entity_decode(strip_tags($string))))));