2014-10-08 2 views
-5
$var1 = "ab:abc:abcd:ghi:jpq"; 
$var2 = "abcdefghi"; 

위의 변수를 고려하십시오. 스플릿과 루프를 수행하지 않고 var2의 시작과 일치하는 var1의 모든 항목을 어떻게 얻을 수 있습니까?동일한 문자열이 여러 개 일치하는 항목 찾기

var2의 길이는 중요하지 않습니다. 시작 부분이 var2에 일치하는 한 var1 부분은 $matches에 추가해야합니다.

또한 var2은 함수에 전달되는 인수이고 var1은 한 번만 검색 한 결과입니다. 따라서 var2의 콘텐츠는 정적이지 않습니다.

+0

귀하의 노력과 연구도 마찬가지입니다. – Braj

+0

모든':'를'|'로 바꾸고, 모든 것을'()'로 둘러 싸고 앞에'^'를 추가하십시오. regex 함수와 함께 사용하십시오. 특수 문자가있는 경우 특히 모든 경우에 적용됩니다. 토큰을 나누고 따옴표를 써야 겠어. 아아그 랭그, 왜 이러는 거니? 확인하려면 분할하고 반복하십시오. – nhahtdh

+0

시도해 보니 첫 번째 경기 만 인쇄됩니다. 그리고 네, split/loop는 작동 할 것이지만, 그렇게하기 전에 더 좋고 효율적인 방법이 없다는 것을 확신하고 싶습니다. 이 검색은 여러 번 사용되며 루프가 항상 가장 빠른 솔루션은 아닙니다. var1에 100 개의 항목이 포함되어 있고 각각 100 회 검색 할 때마다 시작 확인을 수행하면 요청 당 많은 루프가 발생합니다. –

답변

0
$pattern = "/(\bab)|(\babc)|(\babcd)|(\bghi)|(\bjpq)/g"; 
preg_match_all($pattern, $var2, $matches); 
관련 문제