이 정규 표현식을 대체했습니다 (phpbb 소스 코드에서 가져옴). 나는이링크를 대체 할 PHP 정규 표현식
asdfafdsfdfdsfds
<!-- m --><a class="postlink" href="http://website.com/link-is-looooooong.txt">http://website.com/link ... oooong.txt</a><!-- m -->
asdfafdsfdfdsfds4324
같은 메시지를 통해 그것을 실행하는 경우
$match = array(
'#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+")?href="(.*?)" target\=\"_blank\">.*?</a><!\-\- \1 \-\->#',
'#<!\-\- .*? \-\->#s',
'#<.*?>#s',
);
$replace = array('\2', '', '');
$message = preg_replace($match, $replace, $message);
그것은 내가 대체 기능으로 그것을 만들 싶습니다 그러나이
asdfafdsfdfdsfds
http://website.com/link ... oooong.txt
asdfafdsfdfdsfds4324
반환합니다. 그래서 href를 제공함으로써 블록 내의 링크 제목을 대체 할 수 있습니다.
URL, 새 URL 및 새 제목을 제공하고 싶습니다. 그래서 나는이 변수들로 정규식을 실행할 수 있습니다.
그리고 동일한 원시 메시지가 반환되지만 링크가 변경됩니다.
<!-- m --><a class="postlink" href="http://otherwebsite.com/">hello</a><!-- m -->
나는 이런 식으로 조정 해 보았지만 올바른 결과를 얻지 못했습니다. 일치하는 결과를 구축하는 방법을 모르므로 교체 후 동일한 형식을 갖습니다.
$message = preg_replace('#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+")?href="'.preg_quote($url).'" target\=\"_blank\">(.*?)</a><!\-\- \1 \-\->#', $replace, $message);
정규식과 html의 문제점을 알고 있습니다. 그러나 phpbb 데이터베이스에서 가져온 구조이므로 항상 일관성을 유지합니다. – Tike