Удаление специальных символов из строки
Я использую функцию для удаления специального символа из строк.
function clean($string) {
$string = str_replace('', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
И вот тестовый пример
echo clean('a|"[email protected]£de^&$f g');
Will output: abcdef-g
с ссылкой из ответа SO.
Проблема в том, что если "является последним символом в моей строке, например, я получаю строку America'
из файла excel, если я помещаю ее в эту функцию, она не будет '
. Любая помощь, когда первая и последняя символ '
Ответы
Ответ 1
попытаться заменить регулярное ожидание
изменить
preg_replace('/[^A-Za-z0-9\-]/', '', $string);
с
preg_replace("/[^A-Za-z0-9\-\']/", '', $string); // escape apostraphe
или
вы можете str_replace это быстрее и проще, чем preg_replace() , потому что он не использует регулярные выражения.
$text = str_replace("'", '', $string);
Ответ 2
Более подробно из приведенного выше примера. Ниже рассматривается ваша строка:
$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 и специальные символы, кроме выше
Ответ 3
На первый взгляд я считаю, что функция addslashes может быть отправной точкой. http://php.net/manual/en/function.addslashes.php
Ответ 4
Определенно лучший образец там, но это должно работать для всей строки:
preg_replace("/^'|[^A-Za-z0-9\'-]|'$/", '', $string);
Если вам нужно заменить их на слова в строке, вам придется использовать \b для границ слов. Кроме того, если вы хотите заменить кратность в начале или в конце, вам нужно добавить + к этим.