2013-02-10 5 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

답변

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; 
} 
관련 문제