내 앱에 a-facebook과 유사한 언급 기능이 있습니다.모두 일치하는 PHP 정규식 패턴
게시물이나 댓글을 작성할 때 사용자는 @ 기호로 다른 사용자를 언급 할 수 있습니다. 나는 다음을 사용 jQuery 플러그인 : http://podio.github.com/jquery-mentions-input/
는 다음과 같은 형식으로 생성됩니다 언급 : @@ [마르코 Kurjonen : 2] 그래서 "@@ [사용자 이름 : USER_ID]
현재 나는 다음과 같은 한 패턴 (코드) :.
$pattern = "/@@\[(.*):(\d*)] /ims";
$matches = array();
preg_match_all($pattern, $input, $matches);
Zend_Debug::dump($matches);
$output = preg_replace($pattern, "<a href=\"". $this->view->baseUrl("user") ."/$2\" class=\"tooltip\">$1</a>", $input);
문제는 그것이 첫 번째 언급 않는다는 것입니다
예 문자열 :
$input = "Hello @@[Markku Pelkonen:7] and @@[Marko Kurjonen:2]"
preg_replace로 첫 번째 사용자 만 변환됩니다. 당신이 정규식을 사용할 수 있습니다
BR, 마르코
대괄호는 전체 태그 내용을 정의하는 것이기 때문에'[^ :] '대신'[^ \]]을 사용하고': (\ d *)'를 발견 할 수 있기 때문에 사용자 이름에서':'이됩니다. – Backlin
@Backlin : 사용자 이름 형식이 확실하지 않습니다. ']'이 사용자 이름에 있다면, 나는 혼동을 해결하기 위해 OP가 무엇을 할 것인지 모른다. – nhahtdh
네 말이 맞아.'[^ :]'을 사용하면 사용자 이름에 콜론을 사용할 수 없으며 '[^ \]]을 사용하면 닫는 괄호를 사용할 수 없습니다. 그러나 나는 이런 캐릭터를 피하기 위해 그 캐릭터 중 어느 것도 허용해서는 안된다고 생각한다. – Backlin