[SQL] 문자열 PHP에서 두 문자 사이의 문자열을 추출
SQL문자열 PHP에서 두 문자 사이의 문자열을 추출
문자열이 개 다른 문자 사이의 문구를 추출 할 수있는 PHP 함수가 있나요? SUBSTR 같은 뭔가 ();
예:
$String = "[modid=256]";
$First = "=";
$Second = "]";
$id = substr($string, $First, $Second);
따라서 $ ID는 256 일 것입니다
어떤 도움을 주시면 감사하겠습니다 :)
해결법
-
==============================
1.이 코드를 사용
이 코드를 사용
$input = "[modid=256]"; preg_match('~=(.*?)]~', $input, $output); echo $output[1]; // 256
예를 들어 작업 http://codepad.viper-7.com/0eD2ns
-
==============================
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.
$String = "[modid=256]"; $First = "="; $Second = "]"; $Firstpos=strpos($String, $First); $Secondpos=strpos($String, $Second); $id = substr($String , $Firstpos, $Secondpos);
-
==============================
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.정규 표현식은 당신의 친구입니다.
정규 표현식은 당신의 친구입니다.
preg_match("/=(\d+)\]/", $String, $matches); var_dump($matches);
당신이 그것을 적용해야합니다 다른 값이, 임의의 숫자와 일치합니다.
-
==============================
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.
$str = "[modid=256]"; preg_match('/\[modid=(?P<modId>\d+)\]/', $str, $matches); echo $matches['modId'];
-
==============================
8.(주석에서 이동 서식이 여기 쉽기 때문에)
(주석에서 이동 서식이 여기 쉽기 때문에)
게으른 방법이 될 수 있지만, 이러한 경우에 나는 일반적으로 먼저처럼 내 문자열을 폭발합니다 :
$string_array = explode("=",$String);
그리고 두 번째 단계에서 나는 "]"어쩌면 RTRIM을 통해 없애 것이다 :
$id = rtrim($string_array[1], "]");
... 구조는 항상 정확히 동일한 경우 그러나 이것은에만 작동합니다 ...
-건배-
PS : 그것은 실제로 $ 문자열 안된다 = "[modid = 256]"; ?
-
==============================
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.당신은 정규 표현식을 사용하거나이를 시도 할 수 있습니다 :
당신은 정규 표현식을 사용하거나이를 시도 할 수 있습니다 :
$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에 대해 읽어야합니다. 이를위한 가장 좋은 방법은 정규 표현식이다.
from https://stackoverflow.com/questions/14891743/extract-a-substring-between-two-characters-in-a-string-php by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 SELECT는 NOT IN이 (SELECT가 B의 X) WHERE A로부터 X - 예기치 않은 결과를 (0) | 2020.06.06 |
---|---|
[SQL] SQLite는 외국인 키 제약 조건을 활성화 (0) | 2020.06.06 |
[SQL] SQL은 - 어떻게 소수점 이하 숫자 만받을 수 있나요? (0) | 2020.06.06 |
[SQL] MySQL은 0과 널 (null)을 교체 (0) | 2020.06.06 |
[SQL] 날짜에서 MySQL의 스트립 시간 성분 (0) | 2020.06.06 |