Tehre가 최선의 방법을 수행하는 방법에 대한 분명한 대답은 아닙니다.bbcode 링크 + 비 bbcode URL에 대한 REGEX
[URL = HTTP : //thisisalink.com] 링크 [/ URL]
뿐만 아니라 가능한 복사/붙여 넣기 URL을 :
나는 BBCode의 형식으로 링크를 수있는 몇 가지 BBCode는이
두 인스턴스를 클릭 가능한 링크로 대체하려고합니다. 나는 현재 다음과 같은 것을 가지고있다 : 정규식 실행 :
"/\[link=http:\/\/(.*?)\](.*?)\[\/link\]/is"
"/\[link=https:\/\/(.*?)\](.*?)\[\/link\]/is"
"/\[link=(.*?)\](.*?)\[\/link\]/is"
$URLRegex = '/(?:(?<!(\[\/link\]|\[\/link=))(\s|^))'; // No [url]-tag in front and is start of string, or has whitespace in front
$URLRegex.= '('; // Start capturing URL
$URLRegex.= '(https?|ftps?|ircs?):\/\/'; // Protocol
$URLRegex.= '\S+'; // Any non-space character
$URLRegex.= ')'; // Stop capturing URL
$URLRegex.= '(?:(?<![[:punct:]])(\s|\.?$))/i'; // Doesn't end with punctuation and is end of string, or has whitespace after
나는 둘 다 일할 수 없을 것 같다. 이 경우 마지막 정규식은 첫 번째 정규식의 연결을 끊는 것 같습니다.
분명히 bbcode 링크와 붙여 넣은 URL을 서로 충돌하지 않고 함께 연결하는 가장 좋은 방법은 문서화되어 있습니다. 난/두 배 사본을 캡처 붙여 넣은
$pattern = '~\[url\s*+=\s*+([^]\s]++)]([^[]++)\[/url]|((http://\S++))~i';
$result = preg_replace($pattern, '<a href="$1$3">$2$4</a>', $string);
참고 : 당신이 할 수있는
는