나는 수년간 아주 잘 작동하고있는 사용자 정의 마크 업 구문 분석 기능을 가지고 있습니다. 나는 최근에 내가 알아 차리지 못했던 버그를 발견했고 그것을 고칠 수 없었습니다. 누군가가 이것으로 나를 도울 수 있다면 그것은 굉장 할 것입니다. 그래서 나는 사용자 정의 빌드 된 포럼과 텍스트 기반의 MMORPG를 가지고 있으며 모든 입력은 마크 업과 같은 bbcode를 위해 새 니타 이징되고 파싱됩니다. 또한 URL을 구문 분석하여 사이트를 떠나는 면책 조항이있는 이탈 페이지로 연결되는 합법적 인 링크로 만듭니다 ... 그래서 내가 가지고있는 문제는 사용자가 여러 개의 URL을 텍스트 상자 (\ n 구분 된 것으로 가정)는 다른 모든 URL을 링크로 변환 만합니다. 다음은 URL의 구문 분석기입니다.PHP 정규식 URL 구문 분석 문제 preg_replace
$markup = preg_replace("/(^|[^=\"\/])\b((\w+:\/\/|www\.)[^\s<]+)" . "((\W+|\b)([\s<]|$))/ei", '"$1<a href=\"out.php?".shortURL("$2")."\" target=\"_blank\">".shortURL("$2")."</a>$4"', $markup);
위에서 볼 수 있듯이 PHP 함수가 호출되었지만 여기에는 문제가 없습니다. 그런 다음 전체 텍스트 블록이 줄 단위 또는 다른 방법이 아닌 동시에이 preg_replace에 전달됩니다. 이 preg_replace이다를 작성하는 간단한 방법이 있다면
- , 그건 내 궁극적 인 목표는 여기
예 INPUT의이 단지 다른 모든 URL을 구문 분석하는 이유를 알아낼 수 있다면 나를
http://skylnk.co/tRRTnb
http://skylnk.co/hkIJBT
http://skylnk.co/vUMGQo
http://skylnk.co/USOLfW
http://skylnk.co/BPlaJl
http://skylnk.co/tqcPbL
http://skylnk.co/jJTjRs
http://skylnk.co/itmhJs
http://skylnk.co/llUBAR
http://skylnk.co/XDJZxD
예 출력 :
<a href="out.php?http://skylnk.co/tRRTnb" target="_blank">http://skylnk.co/tRRTnb</a>
<br>http://skylnk.co/hkIJBT
<br><a href="out.php?http://skylnk.co/vUMGQo" target="_blank">http://skylnk.co/vUMGQo</a>
<br>http://skylnk.co/USOLfW
<br><a href="out.php?http://skylnk.co/BPlaJl" target="_blank">http://skylnk.co/BPlaJl</a>
<br>http://skylnk.co/tqcPbL
<br><a href="out.php?http://skylnk.co/jJTjRs" target="_blank">http://skylnk.co/jJTjRs</a>
<br>http://skylnk.co/itmhJs
<br><a href="out.php?http://skylnk.co/llUBAR" target="_blank">http://skylnk.co/llUBAR</a>
<br>http://skylnk.co/XDJZxD
<br>
테스트 케이스를 실패 할 수 있습니까? – nhahtdh
나는 지금 글을 업데이트했다. –