내 문자열에서 태그를 일치 시키려고합니다. @[anyNumbers:anyNumbers:anyLetters]
@[]
을 제거하고 나중에 모든 문자열을 inbetween로 남겨두기를 원합니다.
가장 쉬운 방법은 무엇입니까? (ODWS) 캠페인 [신발없이 한 날 : 274 159208207468539]간단한 preg_match 정규식이 필요합니다.
$str = 'Have you heard of the @[159208207468539:274:One Day without Shoes] (ODWS) campaign? ODWS is an annual initiative by @[8416861761:274:TOMS] to bring awareness around the impact a pair of shoes can have on a child's life.';
function gettag($text){
//
//$regex = "\@[([a-z0-9-:]*)\]";
//$match = preg_match("/^$regex$/", $text);
//return $match;
return preg_replace('/@\[(\d+:\d+:[a-zA-Z]+)\]/', '${1}', $text);
}
gettag($str);
반환
당신은 @를 들어 본 적이 있습니까? ODWS는 연간 계획으로 8416861761 : 274 : TOMS 어린이 안전을 위해 신발 한 켤레에 미치는 영향에 대한 인식을 제고합니다. 당신의 패턴을 약간 수정 된 버전을 사용
See it on codepad
나는 당신의 모두에게 감사를 기대했다 당신의 시간과 문제. 지금까지 필자가 필요로하는 배열을 필터가 반환하고 @ []의 제거가 아직 실패하지 않았습니다. 나는이 두 가지를 모두 사용하기 위해 당신의 솔루션을 혼합해야했기 때문에, 두 사람 모두 내가 이것을 얻지 못했을 것입니다. –