Моя строка выглядит примерно так:
$string = ' Link_1: [code]This is a textual line. www.google.com This is a textual line.[/code] Link_2: [php]This is a textual line. www.google.com This is a textual line.[/php] ';
Я хочу использовать REGEX, чтобы я мог заменить URL внутри этой строки и должен вернуться следующим образом:
Link_1: [code]This is a textual line. LINK HIDDEN This is a textual line.[/code] Link_2: [php]This is a textual line. LINK HIDDEN This is a textual line.[/php]
Я REGEX noob, поэтому, пожалуйста, помогите мне найти правильный REGEX, чтобы получить результат, упомянутый выше, спасибо
Используйте положительный взгляд, чтобы проверить, будут ли ссылки, которые будут сопоставлены, не будут сопровождаться закрывающим php или кодовым тегом.
$content = <<<EOS Link_1: [code]This is a textual line. www.google.com This is a textual line.[/code] Link_2: [php]This is a textual line. www.google.com This is a textual line.[/php] EOS; $needle = '~(?:https?://)?(?:www\.)(?:[^.\s]+)(?:\.[^.\n\s]+)*\.\w{2,4}(?=(?:(?!\[/?(?:code|php)])[\S\s])*\[/(?:code|php)])~m'; echo preg_replace($needle,'LINK HIDDEN',$content);
Вывод:
Link_1: [code]This is a textual line. LINK HIDDEN This is a textual line.[/code] Link_2: [php]This is a textual line. LINK HIDDEN This is a textual line.[/php]