1

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

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

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

7 回答 7

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)
于 2012-04-16T12:05:38.753 回答
1

每个人都在这里发布有关正则表达式的问题有什么问题?:/

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

第 1 步:转义所有正则表达式的内部特殊字符\(以及您在字符串中留下的额外单引号......)

结果:

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

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

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

封装后:

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

最后,您需要用一些东西来分隔正则表达式(PHP 需要这样来定义正则表达式),我们还将添加贪婪的“+”符号以匹配尽可能多的连续符号。

最终的:

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

现在你应该很高兴:

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

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

于 2012-04-16T12:20:32.333 回答
0

是你要找的吗?

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

$result = str_replace($search, $replace, $subject);
于 2012-04-16T12:03:10.847 回答
0

对上述内容使用此正则表达式

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

经过测试

于 2012-04-16T12:04:45.277 回答
0

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

使用 str_replace 之类的函数将是一个更简单的解决方案。

于 2012-04-16T12:05:24.820 回答
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");
于 2012-04-16T12:06:01.350 回答
0

使用 str_replace 怎么样!它对性能的影响较小

$chars= array("!", "\"", "#", "$", "%", "&", "/", "(", ")", "?", "*", "+", "'", "-", ".", ",", ";", ":", "_");
$cleanstring = str_replace($chars, "", $yourstring);
于 2012-04-16T12:07:16.293 回答