일부 URL이 포함될 수있는 텍스트의 단어 목록을 바꾸려면 preg_replace를 사용하고 있습니다. 문제는 URL의 일부인 경우이 단어를 대체하고 싶지 않다는 것입니다.preg_replace 단어가 URL 내에 없음
이러한 예는 무시되어야한다
foo.com
foo.com/foo
foo.com/foo/foo
염기성 (예를 들면, PHP로 작성), 난 .com 및 선택적 슬래시와 문자를 포함하는 문자열을 무시하려고, 네가 봐 미리 엉덩이를 사용하여 ,하지만 성공 ertion :
preg_replace("/(\b)foo(\b)/", "$1bar$2(?!(\w+\.\w+)*(\.com)([\.\/]\w+)*)", $text);
이 호출 작동은 .COM 전에 단어를 무시합니다. 도움이 될 것입니다.
나는 그것을 달성하는 방법에 대해 잘 모르겠습니다. 두 번째 옵 션이 일치 할 때만 대체품을 만들 수 있습니까? 예를 들어 ** foo foo.com **은 ** bar foo.com ** 을 생성하지만 솔루션은 ** bar foo.com bar ** – savioret
을 생성합니다. 마지막으로이 방법을 사용하여 문제를 해결할 수 있었지만 preg_replace_callback 함수를 사용하여 문자열의 버려진 부분을 소비 할 수 있었고 콜백 내부에서 처리 중이거나 일치하는 문자열이 아닌지를 결정했습니다. – savioret
다행 이니 다행입니다. 나는 당신의 코멘트를 완전히 놓쳤다, 미안. –