regex — неверный html возвращается, когда & quot; www & quot; или & quot; .com & quot; приходит URL для ссылки, которая создается динамически с использованием регулярного выражения в Stack Overflow

Я получаю недопустимый HTML, как при попытке создать ссылку динамически с помощью регулярного выражения с использованием шаблона.

Это моя функция, которая создает ссылку:

$message ="sddsdsd @@[Sanesh Sunny:ZGNjBQN9ac3K] dsdsdsd ";
function convert_usertags_links($message,$extraParams){
$tag_name = 'a'; //default a
$has_link = $new_tab = 0; //default no link
$href = $target = $sel_id = $tag_col = "";
$tag_col = 'tag_col';
if(isset($extraParams['tag_name']) && $extraParams['tag_name']!="")
$tag_name = $extraParams['tag_name'];
if(isset($extraParams['tag_col']) && $extraParams['tag_col']!="")
$tag_col = $extraParams['tag_col'];
if(isset($extraParams['has_link']) && $extraParams['has_link']!="")
$has_link = $extraParams['has_link'];
if(isset($extraParams['new_tab']) && $extraParams['new_tab']!="")
$new_tab = $extraParams['new_tab'];
if(isset($extraParams['selector_id']) && $extraParams['selector_id']!="")
$sel_id = $extraParams['selector_id'];
$site_url = 'www.google.com/project/';
if($has_link == 1)
$href = " href='".$site_url."user/profile/$2' ";
if($has_link == 1)
$target = " target='_blank' ";
/*
* to match numbers only
*/
$pattern = "/@@\[([^:]*):(.*?)\]/";
#$pattern = "/@@\[([^:]*):([0-9a-zA-Z]*)\]/";
$matches = array();
preg_match_all($pattern, $message, $matches);
$output = preg_replace($pattern, "<".$tag_name." class='".$tag_col."' id='".$sel_id."_$2'".$href.$target." >$1</".$tag_name.">", $message);
return $output;
}

Эта функция прекрасно работает на локальном хосте, но когда я попробовал то же самое на моем сервере, имеющем site_url, вроде «https://dsdsdsdsdsd.com/project«Я получаю недействительный HTML, как:

<a class="tag_col" id="user_tag_link_ZGV3ZmZ9ac3K_ZGNjBQN9ac3K" href="&lt;a href=&quot;www.google.com/4thambit-v6/user/profile/ZGNjBQN9ac3K&quot; target=&quot;_blank&quot;&gt;www.google.com/4thambit-v6/user/profile/ZGNjBQN9ac3K&lt;/a&gt;" target="_blank">Sanesh Sunny</a>

Href содержит еще один тег внутри … если я передаю site_url как 192.168.1.X, который является IP-адресом, он работает нормально, но когда я использую «www» или «.com» внутри sit_url, вышеупомянутый недействительный html возвращается с другим тег внутри href ……

Есть идеи, почему это происходит? Я пробовал несколько сайтов, но без помощи ….

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]