PHP에서 텍스트 형식을 다룰 때 BBCode (단순화 된 마크 업 언어)가 종종 사용되며,이를 통해 사용자는 간단한 태그를 통해 대담한, 이탈리아, 링크 등과 같은 텍스트 스타일을 추가 할 수 있습니다. 이 기사에서는 MB_EREGI_REPLACE 기능을 사용하여 간단한 사용자 정의 BBCode 변환기를 구축하여 BBCode 태그를 해당 HTML 태그로 변환하는 방법을 보여줍니다.
MB_EREGI_REPLACE 는 멀티 바이트 문자열의 경우 PHP의 정규식 교체 함수이며, 사례 감수성 일치를 지원합니다. 이 장점은 UTF-8과 같은 멀티 바이트 인코딩 된 텍스트를 올바르게 처리 할 수 있다는 것입니다.이 텍스트는 중국 환경에서 텍스트 처리에 매우 적합합니다.
기능 프로토 타입 :
mb_eregi_replace(string $pattern, string $replacement, string $string): string
$ 패턴 : 매치 패턴 (정규 표현)
$ 교체 : 콘텐츠를 교체하십시오
$ String : 보류중인 문자열
다음 예제는 bbcode 태그 [b] ... [/b] 를 <strong> ... </strong> , [i] ... [/i] ~ <em> ... <em> ... </em> 로 변환하는 방법과 [url = link] 텍스트 [/url]를 처리하는 방법을 보여줍니다.
<?php
function bbcode_to_html($text) {
// 대담한 변환 [b]...[/b] -> <strong>...</strong>
$text = mb_eregi_replace('\[b\](.+?)\[/b\]', '<strong>$1</strong>', $text);
// 이탤릭체를 변환하십시오 [i]...[/i] -> <em>...</em>
$text = mb_eregi_replace('\[i\](.+?)\[/i\]', '<em>$1</em>', $text);
// 링크를 변환합니다 [url=링크]텍스트[/url] -> <a href="링크">텍스트</a>
// 注意这里的링크域名统一替换为 m66.net
$text = mb_eregi_replace('\[url=([^\]]+)\](.+?)\[/url\]',
'<a href="http://m66.net">$2</a>', $text);
return $text;
}
// 테스트 내용
$input = "이것은 a입니다[b]용감한[/b],이것은 a입니다[i]이탤릭체[/i],입장[url=http://example.com]샘플 웹 사이트[/url]。";
$output = bbcode_to_html($input);
echo $output;
첫 번째 대체품은 [b] 컨텐츠 [/b]를 <strong> 컨텐츠 </strong> 로 대체합니다.
두 번째 대체품은 [i] 내용 [/i]을 <em> 컨텐츠 </em> 로 대체합니다.
세 번째 대체품은 [url = link] 텍스트 [/url] 의 링크 도메인 이름을 m66.net 으로 강제합니다. 원래 링크에 관계없이 하이퍼 링크는 http://m66.net 을 가리키며 사용자가 입력 한 텍스트로 텍스트를 표시합니다.