내의 URL과 일치하지 않는 웹 사이트에 코멘트 섹션을 만들기위한 정규식. 는 처음에는 어떤 URL을 찾는 정규 표현식을하고 모든 URL의 의견에를 찾기 위해이URL을 preg_replace하지만 bbcode [url]
<a href="url"></a>
그래서
내가 슈퍼 정규 표현식을 발견 둘러싸여 대체하기 위해 필요하고 나는 모든 반환하는 함수를했다 HTML 태그가있는 URL :
function addURLTags($string) {
$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
return preg_replace($pattern, '<a href="$1">$1</a>', $string);
}
모든 것이 우수 해졌습니다. 하지만 1 주일 전에 상사가 나에게 bbcode를 덧글 섹션에 추가해야한다고했습니다. 그리고 나는 "문제 없음"과 같았습니다 ...하지만 그는 내 함수 addURLTags가 머물러 있어야한다고 말했습니다.
그래서 같은 문자열 :
http://www.google.com
[url]http://www.google.com[/url]
[url="http://www.google.com"]http://www.google.com[/url]
이 동일한 문자열로 교체해야합니다은 :
<a href="http://www.google.com">http://www.google.com</a>
그래서 나는 HTML 코드에 모든 BBCode는의 발생 회수를 대체하는 약간의 PHP 라이브러리를 얻었다.
그리고 나는 생각했다 : "좋아, 처음 나는 beggining에서 [URL] 태그가없는 모든 URL의 발생 회수를 받아야 둘째 나는 모든 BBCode의 태그를 대체!"
그리고 난에 시도 슈퍼 정규 표현식의 시작 부분에 다음과 같은 부정적인 주장을 추가하십시오.
/(? i) \ b (?: [url]) (?: https ?: // www \ d {0, [+] (| [^ \ s()]) [[az]) (+) :(([^ \ s() <]] | | (([^ \ s() <) >] +)))(예 :) | [^ \ s`!() [] {}; : '\ "., <>?«»" "' ']))/
그러나 didnt work!
정규식이있는 초보자 나 필자가 시도한 모든 온라인 테스터는 긴 정규식으로는 잘 작동하지 않습니다. 나는 그 밖의 무엇을 시도하는지 모른다.
의견이 있으십니까? [url] bbcode 태그의 유무에 관계없이 "url replacement"를 수행하는 PHP lybrary를 알고 계십니까?
미리 감사드립니다.
나는 너무 많은 것에 초점을 맞추어 나의 방식대로, 나는 모든 가능성을 바라 볼 수 없었다. 코멘트 문자열을 splitted하고 모든 bbcode의 문자열을 저장합니다. 그런 다음이 모든 것을 bbcodelibrary로 보냅니다. 나머지 문자열은 슈퍼 정규 표현식에서 잘 작동했습니다. 정말 고맙습니다! –