.*?)\1#is'; public function __construct( private AddressRules $address_rules ) { } public function is_same( string $written_address, string $link_url ): bool { $address = $this->address_rules->normalize( $written_address ); return $link_url === $address; } public function tag_points_to( string $tag, string $link_url ): bool { $matches = array(); preg_match_all( self::ATTRIBUTE_PATTERN, $tag, $matches ); foreach ( $matches['address'] as $written_address ) { if ( $this->is_same( $written_address, $link_url ) ) { return true; } } return false; } }