2012-01-26 4 views
-2

프로그래머로서 나는 매일 데이터를 필터링, 검색 및 검증해야합니다. 이러한 모든 문제에 대해 정규 표현식이나 일반 PHP를 사용할지 결정해야합니다. How to write a regex expression that replace anchors and links value정규 표현식 사용 또는 피하기?

정규 표현식에 사용의 가장 큰 장점은 그 짧은하지만, 따라서 당신은 가독성을 많이 잃게 : 심지어 간단한 예에서

여기처럼 나는 그것을 사용할지 분명하지 않다 생각합니다.

모범 사례가 있습니까?

+0

음 [정규 표현식은 PHP의 일부입니다.] (http://php.net/manual/en/book.pcre.php). –

+1

유스 케이스에 전적으로 의존합니다. 유효성 검사 형식은 HTML과 같은 구문 분석 구문이 좋지 않기 때문에 정규 표현식에 적합한 형식입니다. 구문 분석 언어도 좋지 않습니다. –

+0

정규 표현식이 최적의 솔루션에 속하는지 여부를 알기에는 너무 먼 것입니다. – Quentin

답변

2

입력을 regular grammar으로 표시 할 수 있습니까? 그렇다면 정규식을 사용하십시오. 그렇지 않으면 파서를 처리하기 위해 필요한 정규 표현식을 사용하십시오.

1

정규 표현식은 텍스트의 패턴을 일치시키는 도구입니다. 텍스트의 패턴과 일치시키려는 경우에 사용하십시오.

+1

정확하지 않습니다. HTML 마크 업은 "텍스트의 패턴"이라고 할 수 있지만 정규 표현식은 일치시킬 수 없습니다. 정규 표현식은 * regular * 언어와 일치하는 경우에만 사용됩니다. – Tomalak

0

실제로 사용 사례에 따라 다릅니다. 예를 들어,이 숫자 형식 ddd.dddd--d에 있는지 확인해야하는 경우

, 정규 표현식은 최고입니다 :

preg_match('/^\d{3}\.\d{4}--\d$/', $num); 

을하지만, 사용 문자열 함수 또 다른 내부 문자열을 검색해야하는 경우 대신 정규 표현식 :

if (strpos("findme in here", "findme") !== FALSE) { 

} 

당신의 위치가 아닌 변수 컨텍스트를 사용 문자열 함수에 따라 문자열을 검색해야하는 경우 :

$string = "This is the original"; 
$get = "is"; 
echo substr($string, strpos($string, $get) + strlen($get), strlen($string)); 
// the original 
0

먼저 일반 PHP (보통 str 접두어가 붙은 함수)를 사용해보십시오. 솔루션을 쉽게 얻을 수 없다면 정규식을 사용하십시오.