2011-10-18 3 views
0

2 번 시도 (스택 오버플로 덕분에) 후 나는 마침내 내 정규 표현식 URL을 가지고 원하는대로 여러 가지 방법으로 특정 항목을 블랙리스트에 올렸다. 그러나, 그렇다고하더라도 제대로 작동하지 않습니다. 이 단어를 블랙리스트에 그들을 데이터베이스에 입력되지 않도록 않는, 그것은 오류 던졌습니다 :preg_match() 문에서 알 수없는 한정자

PHP Warning: preg_match() [function.preg-match]: Unknown modifier '\\' in C:\wamp\www\anonpost\index.php on line 324, referer: http://localhost/anonpost/index.php

을 그리고 여기 내 코드입니다 : 내가 사이트에 비슷 일부 게시물 보았다

$disallowedWords1 = array(
'offensive','words' 
); 

foreach ($disallowedWords1 as $word1) { 
    if (preg_match("/\b$word1\b/i", $entry)) { 
    die('The word or phrase ' . $word . ' is not allowed...'); 
    } 
} 

$urlRegex = '(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*'; 
if (preg_match($urlRegex, $entry)) { 
    die('The word or phrase ' . $word . ' is not allowed...'); 

} 

, 그들은 모두 거의 구분 기호가 없다는 요지를 만들었습니다. 음, 나는 그것들을 가지고 있습니다. 그래서 그것이 무엇이 될 수 있는지에 관해서는 정말로 잃어버린 것입니다. 어떤 도움을 주시면 감사하겠습니다 :)

(예 : 세 가지 다른 preg_match() 문이 있는데, 각각 약간의 차이가 있지만 주로 텍스트를 찾는 방법과 같은 오류의 예는 게시하려고 시도한 것입니다. http://aviatex14.co.uk/anonpost/)

+0

참조 http://php.net/manual/en/regexp.reference.delimiters.php 가능성이 또한'preg_quote'입니다. – mario

답변

1

탈출을 그 시작을 제거해야 할 수 있습니다 모든 /하거나 문제, 그것은 그냥 지저분한 보이게 다른 reg를 사용하십시오 전 구분자가, 즉 ~ 나 또한

if (preg_match("#$urlRegex#", $entry)) { 

#이, 당신의 정규식이 단축 될 수있다 :

$urlRegex = "(https?|ftp)://([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&;%$-]+)*@)*((?:(25[0-5]|2[0-4]\d|[01]\d{2}|[1-9]\d|[1-9])\.){3}(25[0-5]|2[0-4]\d|[01]\d{2}|[1-9]\d|[1-9]|0)|localhost|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:\d+)*(($|[a-zA-Z0-9.,?'+\\&;%\$#=~_-]+))*"; 
-1

사용 정규식에 해시 태그, 즉 :

preg_match("#/\b$word1\b/i#", $entry) 

(당신은) 슬래시

관련 문제