문제

나 추출하려고 시도하고 모든 경우의 특정에서 형식 문자열:

나는지 궁금하면 새로운 Sony[PT#123456ABC;소니]는 이 기능을 하지만 나의 친구가 말하는 새로운 Toshiba[PT#광고 3232hjk;Toshiba]는 이 기능이 있습니다.

고 싶 추출하기:

[PT#123456ABC;소니]

[PT#광고 3232hjk;도시바]

당신은 여기에서 볼 수 있듯이,항목만에서 일관된 위치:

  • [PT#
  • ;
  • ]

내가 사용하려고 다양한 종류의 strpos()하기 때문에 다양한 길이와 형식의 부품 번호와 제조자의 이름을 안정적으로 풀아웃 해당 인스턴스에서 훨씬 더 큰 문자열입니다.스는 다양한 방법으로는 정규 표현식을 사용하여 이를 해결하기 위해 그러나 나의 지식으로 그들은 상당히 제한됩니다.후에는 내가 이러한 표현을 추출하고 배치로 변수를 나는 것입니다 그런 다음 필요한 부분을 분리 숫자와 제조업체에 이름에서 표현이다.이것도 손쉽게 수행할 수 정규 표현식을 사용하여.

어떤 도움에 감사드립니다.감사

도움이 되었습니까?

해결책

나는 생각을 할 것이라 그것은

preg_match_all( "/(\[PT#\s+.*?;\s+.*?\])/", $input, $matches );

print_r( $matches );

Altternatively 는 경우에,당신은 단지 알고 싶었던 독특한 정보

preg_match_all( "/\[PT#\s+(.*?);\s+(.*?)\]/", $input, $matches );

다른 팁

$matches = array();
preg_match_all( "/\[PT#([^\];]+);([^\]]+)\]/", $input, $matches,  PREG_SET_ORDER);

foreach ($matches as $match) {
  echo "id=", trim($match[1]), " brand=", trim($match[2]), "\n";
}

나는 그것을 당신에서 읽는 텍스트 파일로 포함하는 많은 이들 항목이 있습니다.당신이 할 수있는 것은:

preg_match_all("/\[PT#(.*?);[.*]?(.*?)\]/i", $text, $result);

그것은 모든 일치로 배열$결과에 액세스할 수 있습으로 그들을 그렇:

echo $result[1][0]; //echos first occurrence's serial

$결과로 정렬된 열이 주요과 첫 항목으로 일치하는 완벽한 문자열

echo $result[0][0]; // would print [PT# 123456ABC; Sony]
echo $result[1][0]; // would print 123456ABC
echo $result[2][0]; // would print Sony

희망하는 데 도움이

편집:고정 regex,지금 작동해야(여전히 검증되지 않은)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top