我必须拆分每个单词并将其与内置的本地词典进行比较,然后将其替换为另一种语言中的等效单词。当我使用特殊字符(*例如: * of!)拆分单词时,即使它也不会与词典匹配他们是一样的。
现在我需要用空字符串替换那些特殊字符。
$opis="of!";
$a=preg_replace('!"#$%&/()=?*+'-.,;:_', '', $opis);
print_r($a);
您可以使用str_replace
或preg_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 步:转义所有正则表达式的内部特殊字符\
(以及您在字符串中留下的额外单引号......)
结果:
'!"#\$%&/\(\)=\?\*\+\'-\.,;:_'
第 2 步:将结果封装在一个字符类中,否则 RegEx 只会尝试替换所有出现的字符串!"#$%&/()=?*+'-.,;:_
这显然不是你想要发生的。
封装后:
'[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]'
最后,您需要用一些东西来分隔正则表达式(PHP 需要这样来定义正则表达式),我们还将添加贪婪的“+”符号以匹配尽可能多的连续符号。
最终的:
'~[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+~'
现在你应该很高兴:
$opis="of!";
$opis = preg_replace('[!"#\$%&/\(\)=\?\*\+\'-\.,;:_]+', '', $opis);
print_r($opis)
享受。下次在这里咨询正则表达式信息的最佳位置
是你要找的吗?
http://php.net/manual/fr/function.str-replace.php
$result = str_replace($search, $replace, $subject);
对上述内容使用此正则表达式
$a=preg_replace("/[^A-Za-z0-9]/", '', $opis);
经过测试
使用正则表达式时遇到的问题是您需要转义字符串中的几个字符,因为正则表达式使用大量特殊字符。可以在此处找到列表:http ://www.regular-expressions.info/reference.html
使用 str_replace 之类的函数将是一个更简单的解决方案。
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");
使用 str_replace 怎么样!它对性能的影响较小
$chars= array("!", "\"", "#", "$", "%", "&", "/", "(", ")", "?", "*", "+", "'", "-", ".", ",", ";", ":", "_");
$cleanstring = str_replace($chars, "", $yourstring);