2012-06-26 5 views
0

나는이 유형의 질문을 알고 있으며 이전에 답변을 받았지만 내 패턴 매치에서 오류를 찾아 낼 수 없다.두 개의 바늘 사이에서 PHP preg_replace

일부 매우 screwy 레거시 db 입력으로 인해 나는 두 개의 HTML 특수 문자 사이에 아무것도 제거하려고하고 다음에 남아있는 프로세스로 이동합니다. 원래의 코드는 1 일 이후에 굵은 아무것도 1<b>2 갔다하지만 1&lt;&gt;2 또는 1 2

내가에게 근처에도 오전 중 하나에 남아있을 1&lt;b&gt;2

내가 좋아하는 것처럼 결국있다?

들으 예술

$str = '1&lt;b&gt;2'; 
$output = preg_replace('/&#?[a-z0-9]{2,8};(.*?)\/&#?[a-z0-9]{2,8};/is', '',$str); 
+1

왜 preg_replace ('/ < [^ &]+> /', '', $ str); ? – SpacedMonkey

+0

@SpacedMonkey html 특수 chrs는 아무 것도 될 수 없으므로 위의 예는 그 예입니다. 당신의 작업 예제를 바탕으로 나는 '/ & #? [a-z0-9] {2,8}; [^ &] +/& #? [a-z0-9] {2,8};/<을 와일드 카드로 바꾸지 만 이는 일치 프로세스를 실패합니다. –

+0

죄송합니다. 어떤 단체인지 알지 못했습니다. 왜 중간에 슬래시 BTW? – SpacedMonkey

답변

2

외모 :

$str = strip_tags(html_entity_decode('1&lt;b&gt;2')); 

또는 당신은 공간과 같은 다른 뭔가에 태그를 대체하려는 경우 중간에 슬래시를 제거해야하는 것처럼

/&#?[a-z0-9]{2,8};[^&]+&#?[a-z0-9]{2,8};/is 
0

당신은 할 봤어 :

$str = html_entity_decode('1&lt;b&gt;2'); 
$output = preg_replace('/<\/?[^\>]+>/ui', ' ',$str); 
+0

pls 위를 보면 시스템에 &가있을 수있는 것처럼 와일드 카드 여야합니다. 그것은/정규 표현식 일치에서 추가로 밝혀졌습니다. thx Art –