Intereting Posts
Laravel предыдущие и следующие записи Библиотека PHP, которая генерирует текст ASCII Art Laravel 5.3: настройка часовых поясов на основе местоположения пользователей Можете ли вы использовать именованные параметры в Laravel Rloquent присвоение $ _GET и $ _POST одной переменной Как я могу использовать file_put_contents () с FILE_APPEND | Безопасность LOCK_EX? mongo.so:> undefined symbol: php_json_encode в Unknown on line 0. После установки mongo драйвер для php PHP анализирует строки HTML на основе имени класса Источник события PHP продолжает выполнять Как найти, какие письма находятся в одних и тех же списках? iPhone App / JSON – отправка данных в удаленную базу данных Принятие международных чисел с десятичным разделителем и разделителем тысяч в PHP Как написать выражение регулярного выражения, которое заменяет значение привязки и ссылок fopen с / без @ перед этим Как изменить поведение гиперссылки с двойного щелчка на один щелчок

PHP удаляет специальный символ из строки

У меня проблемы с удалением специальных символов. Я хочу удалить все специальные символы, кроме "() /.% – &", потому что я устанавливаю эту строку как заголовок.

Я отредактировал код из оригинала (смотрите ниже):

preg_replace('/[^a-zA-Z0-9_ -%][().][\/]/s', '', $String); 

Но это не работает, чтобы удалить специальные символы, такие как: «,», «», «» и другие.

исходный код: (это работает, но он удаляет эти символы: «() /.% – &»)

 preg_replace('/[^a-zA-Z0-9_ -]/s', '', $String); 

Ваша точка соответствует всем символам. Выйдите из него (и другие специальные символы), например:

 preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $String); 
 preg_replace('#[^\w()/.%\-&]#',"",$string); 

Хорошая попытка! Я думаю, вам просто нужно сделать несколько небольших изменений:

  • Выбери квадратные скобки ( [ и ] ) внутри класса символов (которые также обозначены [ и ] )
  • Выйти из escape-символа ( \ )
  • Плюс есть причуда, где - особенность: если она находится между двумя символами, это означает диапазон, но если это в начале или в конце, это означает буквенный символ.

Вам нужно что-то вроде этого:

 preg_replace('/[^a-zA-Z0-9_%\[().\]\\/-]/s', '', $String); 

См. http://docs.activestate.com/activeperl/5.10/lib/pods/perlrecharclass.html#special_characters_inside_a_bracketed_character_class, если вы хотите прочитать дальше по этой теме.

Вы хотите, чтобы str заменила , потому что по производительности это намного дешевле и по-прежнему соответствует вашим потребностям!

 $title = str_replace( array( '\'', '"', ',' , ';', '<', '>' ), ' ', $rawtitle); 

(Если это не касается безопасности и SQL-инъекции, в этом случае я бы предпочел пойти с ПОЗИТИВНЫМ списком ДОПОЛНИТЕЛЬНЫХ символов … еще лучше, придерживаться проверенных, проверенных процедур).

Кстати, поскольку OP говорил о настройке заголовка: я бы не заменил специальные символы ничем, а пробелом. Сверхплошное пространство – это не проблема, а два слова, склеенные вместе …

 <?php $string = '`~!@#$%^&^&*()_+{}[]|\/;:"< >,.?-<h1>You .</h1><p> text</p>'."'"; $string=strip_tags($string,""); $string = preg_replace('/[^A-Za-z0-9\s.\s-]/','',$string); echo $string = str_replace( array( '-', '.' ), '', $string); ?> 
 preg_replace('/[^a-zA-Z0-9_ \-()\/%-&]/s', '', $String); 

См. Пример .

 /** * nv_get_plaintext() * * @param mixed $string * @return */ function nv_get_plaintext( $string, $keep_image = false, $keep_link = false ) { // Get image tags if( $keep_image ) { if( preg_match_all( "/\<img[^\>]*src=\"([^\"]*)\"[^\>]*\>/is", $string, $match ) ) { foreach( $match[0] as $key => $_m ) { $textimg = ''; if( strpos( $match[1][$key], 'data:image/png;base64' ) === false ) { $textimg = " " . $match[1][$key]; } if( preg_match_all( "/\<img[^\>]*alt=\"([^\"]+)\"[^\>]*\>/is", $_m, $m_alt ) ) { $textimg .= " " . $m_alt[1][0]; } $string = str_replace( $_m, $textimg, $string ); } } } // Get link tags if( $keep_link ) { if( preg_match_all( "/\<a[^\>]*href=\"([^\"]+)\"[^\>]*\>(.*)\<\/a\>/isU", $string, $match ) ) { foreach( $match[0] as $key => $_m ) { $string = str_replace( $_m, $match[1][$key] . " " . $match[2][$key], $string ); } } } $string = str_replace( ' ', ' ', strip_tags( $string ) ); return preg_replace( '/[ ]+/', ' ', $string ); }