2013-02-10 228 views
0


我有这个功能从字符串中删除特定的单词,这个功能使用单词列表。 所以我有一个查询,我想删除所有类型的字符串像(数量,数量)
这是mycode的:
通过字词表从字符串中删除特定单词

$wordlist = array("LIMIT", "0, 5"); 

foreach ($wordlist as &$word) { 
     $word = '/\b' . preg_quote($word, '/') . '\b/'; 
    } 

$sql = preg_replace($wordlist, '', $sql); 
var_dump($sql); 

,你可以看到,如果函数获取LIMIT或0,5它将被删除,我如何删除任何类型的单词,如“数字,数字”,因此查询将限制在10,40它也将被删除。
知道一个字符串的格式是“is_number,is_number”。
谢谢。

+1

你只需要使用正则表达式,而不是一个固定的列表中的单词列表。而且您必须注意不要引用该表达式,以便将其作为正则表达式应用,而不是作为文字字符串应用。所以也许从_two_数组构造最终的词汇表:其中一个词被引用,其中一个表达式保持原始。表达式可能类似'[0-9] +,\ s * [0-9] +'。 – arkascha 2013-02-10 10:09:53

回答

0

使用的preg_replace()在正则表达式标记的字符串中删除

$pattern = '/\d+,\s*\d+/'; 
$replacement = ''; 

//wordlist version 
$wordlist = array("LIMIT", "0, 5"); 
foreach($wordlist as &$string){ 
    $string=preg_replace($pattern, $replacement, $string); 
} 
//query version 
$query="SELECT * FROM table LIMIT 0, 5"; 
$result=preg_replace($pattern, $replacement, $query); 
2

截至http://snipplr.com/view/65038/描述一个简单的方法是:

function stripCp($string) 
{ 
    $wordlist = array("CP", "case", "postale","Case","Postale","cp"); 
    foreach($wordlist as $word) 
    { 
    $string = str_replace($word, "", $string); 
    } 
    return $string; 
} 
相关问题