복붙노트

[SQL] 문자열 PHP에서 두 문자 사이의 문자열을 추출

SQL

문자열 PHP에서 두 문자 사이의 문자열을 추출

문자열이 개 다른 문자 사이의 문구를 추출 할 수있는 PHP 함수가 있나요? SUBSTR 같은 뭔가 ();

예:

$String = "[modid=256]";

$First = "=";
$Second = "]";

$id = substr($string, $First, $Second);

따라서 $ ID는 256 일 것입니다

어떤 도움을 주시면 감사하겠습니다 :)

해결법

  1. ==============================

    1.이 코드를 사용

    이 코드를 사용

    $input = "[modid=256]";
    preg_match('~=(.*?)]~', $input, $output);
    echo $output[1]; // 256
    

    예를 들어 작업 http://codepad.viper-7.com/0eD2ns

  2. ==============================

    2.사용하다:

    사용하다:

    <?php
    
    $str = "[modid=256]";
    $from = "=";
    $to = "]";
    
    echo getStringBetween($str,$from,$to);
    
    function getStringBetween($str,$from,$to)
    {
        $sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
        return substr($sub,0,strpos($sub,$to));
    }
    
    ?>
    
  3. ==============================

    3.

    $String = "[modid=256]";
    
    $First = "=";
    $Second = "]";
    
    $Firstpos=strpos($String, $First);
    $Secondpos=strpos($String, $Second);
    
    $id = substr($String , $Firstpos, $Secondpos);
    
  4. ==============================

    4.당신은 정규 표현식을 사용하지 않는 strstr, 트림 및 strrev 기능을 사용하지 않으려는 경우 :

    당신은 정규 표현식을 사용하지 않는 strstr, 트림 및 strrev 기능을 사용하지 않으려는 경우 :

    // Require PHP 5.3 and higher
    $id = trim(strstr(strstr($String, '='), ']', true), '=]');
    
    // Any PHP version
    $id = trim(strrev(strstr(strrev((strstr($String, '='))), ']')), '=]');
    
  5. ==============================

    5.정규 표현식은 당신의 친구입니다.

    정규 표현식은 당신의 친구입니다.

    preg_match("/=(\d+)\]/", $String, $matches);
    var_dump($matches);
    

    당신이 그것을 적용해야합니다 다른 값이, 임의의 숫자와 일치합니다.

  6. ==============================

    6.당신은 정규 표현식을 사용할 수 있습니다 :

    당신은 정규 표현식을 사용할 수 있습니다 :

    <?php
    $string = "[modid=256][modid=345]";
    preg_match_all("/\[modid=([0-9]+)\]/", $string, $matches);
    
    $modids = $matches[1];
    
    foreach( $modids as $modid )
      echo "$modid\n";
    

    http://eval.in/9913

  7. ==============================

    7.

    $str = "[modid=256]";
    preg_match('/\[modid=(?P<modId>\d+)\]/', $str, $matches);
    
    echo $matches['modId'];
    
  8. ==============================

    8.(주석에서 이동 서식이 여기 쉽기 때문에)

    (주석에서 이동 서식이 여기 쉽기 때문에)

    게으른 방법이 될 수 있지만, 이러한 경우에 나는 일반적으로 먼저처럼 내 문자열을 폭발합니다 :

    $string_array = explode("=",$String); 
    

    그리고 두 번째 단계에서 나는 "]"어쩌면 RTRIM을 통해 없애 것이다 :

    $id = rtrim($string_array[1], "]");
    

    ... 구조는 항상 정확히 동일한 경우 그러나 이것은에만 작동합니다 ...

    -건배-

    PS : 그것은 실제로 $ 문자열 안된다 = "[modid = 256]"; ?

  9. ==============================

    9.정규 표현식을보십시오

    정규 표현식을보십시오

    $String =" [modid=256]";
    $result=preg_match_all('/(?<=(=))(\d+)/',$String,$matches);
    print_r($matches[0]);
    

    산출

    어레이 ([0] => 256)

    데모

    설명 다음은 정규 표현식의 뒤에 긍정적 봐 (? <=) 사용 foo는 앞에 때 예를 들면 (? <= foo는) 바 일치, 바 여기에 (? <= (=)) (\ D +를) 우리는 (\ D +를) 직후 '='기호를 일치합니다. \ D는 문자 숫자 (0-9)과 일치. + 1 일치 이상의 선행 토큰

  10. ==============================

    10.당신은 정규 표현식을 사용하거나이를 시도 할 수 있습니다 :

    당신은 정규 표현식을 사용하거나이를 시도 할 수 있습니다 :

    $String = "[modid=256]";
    
    $First = "=";
    $Second = "]";
    $posFirst = strpos($String, $First); //Only return first match
    $posSecond = strpos($String, $Second); //Only return first match
    
    if($posFirst !== false && $posSecond !== false && $posFirst < $posSecond){
        $id = substr($string, $First, $Second);
    }else{
    //Not match $First or $Second
    }
    

    당신은 SUBSTR에 대해 읽어야합니다. 이를위한 가장 좋은 방법은 정규 표현식이다.

  11. from https://stackoverflow.com/questions/14891743/extract-a-substring-between-two-characters-in-a-string-php by cc-by-sa and MIT license