php
  • strpos
  • 2017-04-08 2 views 0 likes 
    0

    비트 연산자 "|"를 사용할 수 있습니까? PHP에서 strpos와 함께? a0, a1, a2, a5 문자열이 주어진 $ status 변수에 있는지 확인해야합니다. 내 코드는 다음과 같습니다. 상태 코드가 값 = a0 또는 a1 또는 a2 또는 a5 일 때만 내 코드가 값 (위치)을 반환합니다. $ status = 'a1 테스트 문자열 인 경우 false를 반환합니다.비트 연산자 "|"를 사용할 수 있습니까? PHP에서 strpos와 함께?

    $status='a1 test string'; 
    echo strpos("|a0|a1|a2|a5|", $status); 
    
    +0

    질문은 다음과 같습니다 : 당신이 실제로 검색 할 그 상태 문자열의 어떤 _part_을 정의하는 방법을 여기에

    은 단순한 반복 기반의 접근 방식인가? – arkascha

    +0

    문자열 ($ status)에 a1 OR a2 OR a0 OR a5 – user1752065

    +0

    이 있는지 검색해야합니다. 그리고 상태 문자열이 "a2가 a5 또는 a3과 같지 않습니다!"와 같은 경우? – arkascha

    답변

    1

    이렇게 사용할 수 있습니다. 여기 |or

    <?php 
    $status='a1 test string'; 
    
    if(preg_match("/\b(a0|a1|a2|a5)\b/", $status)) 
    { 
        echo "Matched"; 
    } 
    
    +0

    이 코드는 오픈 소스 프로젝트 (Open EMR)에서 발견되었습니다. 이 코드가 맞습니까? $ status = 'a1 테스트 문자열'; echo strpos ("| a0 | a1 | a2 | a5 |", $ status); – user1752065

    +0

    @ user1752065 다른 옵션도 확인하십시오 –

    1

    우리가 비트 단위 연산자를 사용할 수 있다는 것을 의미 "|" PHP에서 strpos와 함께? 리터럴 상징 |없음

    - - 비트 단위 연산자 |

    +0

    이렇게 '(strpos ("| a0 | a1 | a2 | a5 |", $ status))'는 "| a0 | a1 | a2 | a5 |"를 고려합니다. 단일 문자열 r8로? – user1752065

    +1

    귀하의 경우'r8'은 무엇인지 모르겠지만, 맞습니다.'strpos'는 ""| a0 | a1 | a2 | a5 | "'를 단일 문자열로 간주합니다. – RomanPerekhrest

    1

    아니, 당신은 할 수 없습니다. haystack 문자열 needle이 처음 나타나는 수 위치를 찾기 문자열

    에 문자열이 처음 나타나는 위치를 찾기 -

    strpos : Documentation 원격 유사한 아무것도 언급하지 않습니다.

    매개 변수

    haystack 문자열에서 검색 할 수 있습니다.

    needle을 needle이 문자열이 아니라면, 정수로 변환하여 는 문자를 적용합니다.

    offset 지정되면 검색시 문자열 시작 부분에서이 문자 수인 이 계산됩니다. 오프셋이 음수이면 문자열의 끝에 부터 계산 된이 문자 수만큼 검색이 시작됩니다. 이미 본격적인 regular expression 엔진이 있기 때문에

    는 사실, 이러한 기능을 구현하기 위해 많은 이해가되지 것입니다 : 당신은 할 수없는

    $has_substrings = (bool)preg_match('/a0|a1|a2|a5/u', $status); 
    
    +0

    위 코드를 오픈 소스 프로젝트. 그래서 이것은 "| a0 | a1 | a2 | a5 |"를 고려할 것입니다. 단일 문자열 r8로? – user1752065

    +0

    @ user1752065 r8? 나는 당신이 말하는 것에 대해 희미한 생각을 갖고 있지 않습니다. 우리가 당신을 읽을 수는 없다는 것을 기억하십시오 ;-) 특정 소프트웨어에 대해 궁금한 점이 있으면 명시 적으로 질문해야합니다. –

    0

    을 그 하나의 문자열 검색과. 한 번에 여러 옵션을 테스트 할 수있는 정규 표현식을 사용해야하거나 검색어를 반복해야합니다.

    Sahil Gulati는 정규 표현식 기반 접근법에 대한 간단한 예를 제시했습니다.

    <?php 
    $status = 'a1 test string'; 
    $search = explode('|', substr("|a0|a1|a2|a5|", 1, -1)); 
    // would be much easier to start with an array of search tokens right away: 
    // $search = ['a0', 'a1', 'a2', 'a5']; 
    
    $result = false; 
    array_walk($search, function($token) use ($status, &$result) { 
        $result = (FALSE!==strpos($status, $token)) ? true : $result; 
    }); 
    var_dump($result); 
    
    관련 문제