2014-09-14 4 views
1

나는 진짜로 적당한 해결책을 얻지 않는다.regex를 사용하여 img bbcode를 너비와 높이 (선택 사항)로 바꾸시겠습니까?

내 표준 IMG 코드는 대체 : 물론

preg_replace('~\[img](.*?)\[/img\]~s','<img src="$1" />',$text); 

가 작동합니다. 하지만 너비와 높이가 설정된 경우 bbcode를 바꾸려고합니다. 하지만 그것은 선택 사항이므로 1 차원 만 설정되거나 아무 것도없는 경우에도 작동해야합니다. 내가 잘못있어 생각

preg_replace('~\[img=(.*?)x(.*?)\](.*?)\[/img\]~s','<img width="$1" height="$2" src="$3" />',$text); 

:처럼 [IMG = 12 × 12] 이미지 [/ IMG]의 링크

그래서 BBCode는이 보일 것입니다 :

의 BBCode는 것 같습니다. Anybidy는 이것을 어떻게 해결할 수 있는지 알고 있습니까?

답변

1

이 정규 표현식을보십시오 : 당신이 그것을 코딩

preg_replace('~\[img=?(\d+)?x?(\d+)?\](.*?)\[/img\]~s','<img width="$1" height="$2" src="$3" />',$text); 

방법, 그것은 당신이 원하는 3 건과 일치하지 않을 : [img], [img=NN][img=NNxNN]. 두 치수가 모두 제공된 경우에만 일치합니다.

+0

고맙습니다. :) –

0

정규 표현식이 올바르게 작동해야합니다. I는이 값이 존재 확인합니다하지만 \d+을 사용하고 숫자 타입 인 것 :

당신은 당신의 코드를 받고, 또는 오히려, 어떤 문자열이 일치하는 기대하지만, 그렇지 어떤 오류
~\[img=(\d+)x(\d+)\](.*?)\[/img\]~s 

?

+0

@ user3904923 도움이 되었습니까? 아니면 도움이 더 필요하십니까? –

+0

사실 그렇습니다. 당신의 도움을 주셔서 감사합니다. 나는 그것이 틀렸다라고 말하지 않았다, 그것은 단지 그것을해야했던 것처럼 관리하지 않았다. 하지만 다른 정규식이 효과가있는 것 같습니다. :) –