2016-11-24 1 views
1

MVC, PHP를 사용하여 전자 상거래 웹 사이트에서 작업하고 있습니다. 설명이라는 필드가 있습니다. 사용자는 설명 필드에 여러 개의 제품 ID를 입력 할 수 있습니다. 예를 {productID = 34}, {productID = 58}PHP를 통해 문자열의 다중 문자열 발생 검색

를 들어

나는이 분야에서 모든 제품 ID의를 얻기 위해 노력하고 있어요. 그냥 제품 ID.

어떻게해야합니까?

+0

[일치/일치 항목 : //regex101.com/r/aGs2VQ/1) ('\ d'는 숫자 [0-9]와 일치합니다). [demo at eval.in] (https://eval.in/686248) –

+0

@bobblebubble 휴대 전화에 입력하지 않으려는 몇 가지 이유 때문에 SO 시민권을 연습하고 답변을 게시 할 충성을 거부하십시오. 의견으로. – mickmackusa

답변

1

이 솔루션은 캡처 그룹을 사용하지 않습니다. 오히려, \K을 사용하여 전체 문자열 요소가 괄호를 사용하여 캡처되는 요소가되도록합니다. 배열 요소 수를 50 % 줄이므로이 방법을 사용하는 것이 좋습니다.

$description="{productID = 34}, {productID = 58}"; 
if(preg_match_all('/productID = \K\d+/',$description,$ids)){ 
    var_export($ids[0]); 
} 

// output: array(0=>'34',1=>'58') 

// \K in the regex means: keep text from this point 
0
Without using regex, something like this should work for returning the string positions: 

<code> 
    $html = "dddasdfdddasdffff"; 
    $needle = "asdf"; 
    $lastPos = 0; 
    $positions = array(); 

    while (($lastPos = strpos($html, $needle, $lastPos))!== false) { 
     $positions[] = $lastPos; 
     $lastPos = $lastPos + strlen($needle); 
    } 

    // Displays 3 and 10 
    foreach ($positions as $value) { 
     echo $value ."<br />"; 
    } 
</code> 
+0

굉장한 아룬. 좋은 대답. 하지만 내가 원하는 것은 제품 ID라는 특정 문자열을 검색하는 것입니다. 이 문자열 제품 ID는 설명 필드에서 여러 번 반복 될 수 있습니다. 각 인스턴스마다 ID가 다릅니다. 어떻게해야합니까? 고마워. – Akintunde007

+1

답변이 OP의 입력 문자열을 무시하기 때문에 투표가 중단되었습니다. 전체 답변이 도움이되지 않습니다. 이 답변을 수정하거나 삭제하십시오. – mickmackusa

관련 문제