PHP는 정보 처리를 지향합니다. 언어의 구문은 모든 기능을 갖춘 비교 함수, 문자열 처리 및 비교 연산자로 표현됩니다.
모든 알고리즘은 선택의 순서이며동작. 그러나 선택하기 전에 무언가와 무언가를 비교해야합니다. 문자열은 알고리즘을 제어하기위한 가장 용량이 크고 효율적이며 실용적인 메커니즘입니다. 문자열은 데이터 표현의 변형입니다. 데이터는 모든 알고리즘의 주요 "관심 사항"입니다.
기존의 비교 동작 논리
일반적으로 동적 타이핑 언어는예를 들어, PHP에서 문자열과 숫자의 비교는 크게 다르지 않습니다. 숫자, 마침표 만 포함하고 형식 (수학적 표기법)으로 숫자를 나타내는 데 사용되지 않는 단일 문자가없는 경우 숫자도 문자열입니다.
내용의 경우 gettype () 함수가 "integer"또는 "double"을 제공하더라도 불필요한 질문과 숨겨진 오류없이 숫자가 문자열과 자동으로 병합됩니다.
그러나 기능 사용에는 차이가 있습니다.is_int () 및 is_numeric (). 첫 번째는 매개 변수가 정수일 때 참이고 두 번째는 임의의 숫자 또는 숫자 문자열 일 때 참입니다 (변수는 "문자열"유형이지만 수학적 표기법으로 제공되는 모든 것을 포함합니다).
이 간단한 예는 PHP에서와 같이 좋은 예입니다.문자열 비교 연산자 ( "==", "===", "! =", ...)는 많은 놀라움을 줄 수 있습니다. 변수는 유형을 변경할 수 있지만 항상 숫자는 아니지만 거의 항상 문자열로 변환 할 수 있습니다. 마지막 수단으로 빈 문자열이됩니다.
이를 바탕으로 PHP의 문자열 비교 기능이 가장 많이 사용됩니다. 어느 것을 선택할지는 개발자에게 달려 있습니다. 정규식까지 사용할 수있는 많은 옵션이 있습니다.
사용 가능한 기능의 경계
두 문자열을 비교하는 PHP는 기능을 "잘 수행"합니다.strpos ()는 가장 저렴하고 확실하며 가장 실용적인 옵션입니다. 이 함수의 결과가 숫자이면 한 문자열이 다른 문자열과 고유하게 같거나 하나가 다른 문자열에 포함됩니다.
근본적으로 반대이지만 절대적으로 올바른 접근 방식은 정규식을 사용하는 것입니다.
함수 호출 $ cResult =scCheckFileName ($ cStr)은 "true"를 제공합니다. 이는 문자열이 Word 파일의 이름임을 의미합니다. ".docx"확장자의 변형은 하나만 있고 이름에는 문자가 없습니다. 문자, 숫자 및 기호 "_", "-"만 있습니다.
이 기능은 쉽게 다른 것으로 변환 할 수 있습니다.파일 종류 : $ cPtr = "/ ^ ([a-zA-Z ... 0-9 -_> [4,239]]) u". 문자열을 확인하는이 옵션은 업로드 범위를 확장합니다 (예 : PHP에서 문자열 비교는 "입력 오류의 단일 기회없이 서버에 파일을 업로드하기 위해"적용됨) html, js, css, ...
strpos () 및 preg_match () 사용-과격한 수단. 용어 비교 문제와 직접적인 관련이 없습니다. 그러나 알고리즘의 문제는 안정적이고 정확한 결과를 얻기 위해 모든 가능성을 사용하여 스타일 조합을 적용하는 문제입니다.
PHP 기능 : 문자열 비교
언어 대 문자열의 무기고는순수 비교 함수뿐만 아니라 직접 찾기 또는 바꾸기와의 조합입니다. 액션이 항상 비교와 동일 할 필요는 없습니다. 후자가 반드시 어떤 행의 변경으로 이어지지 않기 때문입니다. 종종 알고리즘의 하나 또는 다른 분기를 선택해야합니다.
일반적인 PHP 버전 : 문자열 비교는 int strcmp (s1, s2) 함수에 의해 수행됩니다.
기능 결과 :
- 0-문자열이 동일합니다.
- -1-첫 번째 줄이 두 번째 줄보다 작습니다.
- 1-첫 번째 줄이 두 번째 줄보다 큽니다.
실제로 이것은 첫 번째PHP 함수 (문자열 비교)가 결정을 내리는 두 번째 문자열. 후자의 경우 발생 위치를 알 수 있으므로보다 제한된 버전의 strpos ()입니다.
strcmp () 함수는 대소 문자를 구분합니다. 대소 문자를 구분하지 않는 방식으로 문자열을 비교해야하는 경우 PHP는 strcasecmp () 사용을 권장합니다. 구문은 동일합니다.
실제로 모든 사람과 함께 일하지 않는 것이 종종 필요합니다.문자열이지만 일부만 포함됩니다. 이를 위해 PHP 함수 세트 (문자열 비교)에는 strncmp (s1, s2, N)가 포함됩니다. 세 번째 매개 변수는 N 바이트 만 비교하도록 지시합니다. 결과는 strcmp ()와 동일합니다.
배열, 문자열 및 비교
데이터는 거의 항상 문자열로 표시됩니다. 배열, 객체 또는 정보 구조를 고려하면 단순한 문자열 구조의 다른 조합 일뿐입니다.
string 형 배열과 string 형은보완적인 방식으로 제시됩니다. implode (배열, 기호) 함수를 사용하여 배열을 문자열로 변환합니다. 예 : $ margins1 = implode ( ",", $ style-> getInnerMargin ()); ... 알고리즘 / 사용자의 작동 ...; $ margins2 = implode ( ",", $ style-> getInnerMargin ())을 사용하면 모든 객체 위치를 위치 문자열로 병합 할 수 있습니다.
그런 다음 PHP 문자열 비교를 수행하고한 번 : $ check = strcmp ($ margins1, $ margins2) 알고리즘이나 사용자가 무언가를 변경했는지 (또는 변경하지 않았는지) 확인합니다. 일반적인 방법으로 비교를 수행하면 배열 요소를 반복해야합니다. 더 오래 걸리고 더 번거롭게 보입니다.
개체 및 문자열
객체 지향 아이디어를 통해 훨씬 더 멋진 PHP 사용 (문자열 비교)을 실현할 수 있습니다.
사물에 대한 현대적 이해속성과 메서드가 있다고 가정합니다. 전자는 일반적으로 숫자, 문자열, 배열 및 기타 개체로 표시됩니다. 후자는 종종 문자열에 쓰기 (put)하고 문자열에서 복원 (get)하는 방법을 포함합니다.
배열과 달리 객체는그 속성과 다른 개체와 상호 작용합니다. 객체는 그 속성이 알고리즘, 프로그램 전체에 대해 실제 의미를 갖는 점에서 "유능"합니다.
이 순간은필요한 정보 만 문자열에 기록하고 문자열에서 복원 할 때 모든 작업 속성을 원하는 상태로 복원합니다. 일반적으로 모든 개체에는 필수적이고 작동하는 정보가 있습니다 (일시적). 이 아이디어를 구현하면 메모리, 디스크 공간, 데이터베이스 레코드를 절약 할 수있을뿐만 아니라 더 간단하고 정확한 수단으로 문자열을 비교할 수 있습니다.
구문 및 의미
PHP는 동적으로 개발되고 있으며 그 기능은 모두문자열 비교 및 처리 측면에서 모두 지속적으로 개선되고 있습니다. 그러나 개발자가 무게 중심을 의미 영역으로 이동하는 것을 막는 것은 없습니다.
기능은 의심 할 여지없이 훌륭하지만사용은 코드의 의미 론적 부분, 객체로 이전 될 수 있습니다. 알고리즘이 객체 상호 작용 시스템으로 제시 될 때, 순차적이고 고전적인 스타일의 일련의 비교 및 작업보다 훨씬 좋아 보입니다.