2012-04-16 181 views
1

我必須拆分每個單詞並將其與內置的本地字典進行比較,並用另一種語言中的等效單詞替換它。當我用特殊字符拆分單詞時(例如:* *!)即使它們相同,也不會與字典匹配。查找並替換字符串中的特殊字符

現在我需要用空字符串替換這些特殊字符。

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

回答

0

這是你在找什麼?

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

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

我有很多特殊字符!「#$%&/()=?* +' - 。,;::_ to compare..through str_replace we can able to use只有一個特殊的字符比較na? – 2012-04-16 12:08:09

0

使用上述

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

測試

0

您使用正則表達式時有問題這個正則表達式,你需要逃跑的幾個中文字該字符串,因爲正則表達式使用了許多特殊字符。可以在這裏找到一個列表:http://www.regular-expressions.info/reference.html

使用像str_replace這樣的函數將是一個更簡單的解決方案。

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"); 
0

怎麼樣使用str_replace函數!它在性能上有較小的打擊

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

大家在這裏發佈有關正則表達式的問題是什麼? :/

好的,您現有解決方案存在的問題在於您如何編寫正則表達式。

步驟1:使用單個\(以及您在字符串中留下的額外單引號)將RegEx的所有內部特殊字符全部刪除...)

結果:

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

第2步:封裝結果在字符類,否則正則表達式將只是嘗試替換字符串!"#$%&/()=?*+'-.,;:_

的所有出現,這顯然不是你想什麼發生。

封裝後:

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

最後,您需要界定的東西正則表達式(PHP需要這種方法來定義一個正則表達式),我們也將添加貪婪的「+」符號匹配儘可能多的順序符號。

決賽:

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

現在,你應該去的好:

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

享受。下一次請參考正則表達式信息的最佳位置here