查找并替换字符串中的特殊字符

时间:2012-04-16 11:59:50

标签: php string

我必须拆分每个单词并将其与内置本地词典进行比较,并将其替换为另一种语言中的等效单词。当我分割带有特殊字符的单词时(* 例如: * of !)即使它们是相同的,它也不会与字典匹配。

现在我需要用空字符串替换那些特殊字符。

$opis="of!";
$a=preg_replace('!"#$%&/()=?*+'-.,;:_', '', $opis);
print_r($a);

7 个答案:

答案 0 :(得分:3)

您可以使用str_replacepreg_replace

示例preg_replace http://php.net/manual/en/function.preg-replace.php

  $str = preg_replace("/\W+/", '', $str);
  var_dump($str);

示例str_replace http://php.net/manual/en/function.str-replace.php

$search =  '!"#$%&/()=?*+\'-.,;:_' ;
$search = str_split($search);
$str = "OF!" ;

var_dump(str_replace($search, "", $str));

输出

string 'OF' (length=2)

答案 1 :(得分:1)

每个人在这里张贴正则表达式有什么问题? :/

好的,你当前解决方案遇到的问题在于你如何编写正则表达式。

步骤1:使用单个\逃离所有RegEx的内部特殊字符(以及您在字符串中留下的额外单引号...)

结果:

'!"#\$%&/\(\)=\?\*\+\'-\.,;:_'

步骤2:将结果封装在字符类中,否则RegEx将尝试替换所有出现的字符串!"#$%&/()=?*+'-.,;:_

这显然不是你想要发生的事情。

封装后:

'[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]'

最后,你需要用正则表达式来界定正则表达式(PHP要求它定义正则表达式),我们还要添加贪婪的“+”符号以匹配尽可能多的顺序符号。

决赛:

'~[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+~'

现在你应该好好去:

$opis="of!";
$opis = preg_replace('[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+', '', $opis);
print_r($opis)

享受。下次咨询正则表达式信息的最佳位置here

答案 2 :(得分:0)

是你在找什么?

http://php.net/manual/fr/function.str-replace.php

$result = str_replace($search, $replace, $subject);

答案 3 :(得分:0)

将此正则表达式用于上述

$a=preg_replace("/[^A-Za-z0-9]/", '', $opis);

测试

答案 4 :(得分:0)

使用正则表达式时遇到的问题是您需要转义字符串中的多个字符,因为正则表达式使用了大量特殊字符。可在此处找到列表:http://www.regular-expressions.info/reference.html

使用像str_replace这样的函数会更容易解决。

答案 5 :(得分:0)

str_replace();就是您所需要的。

来自php官方文档:

// Provides: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

答案 6 :(得分:0)

如何使用str_replace!它对性能的影响较小

$chars= array("!", "\"", "#", "$", "%", "&", "/", "(", ")", "?", "*", "+", "'", "-", ".", ",", ";", ":", "_");
$cleanstring = str_replace($chars, "", $yourstring);