2017-10-14 25 views
-4

我有一個現有的PHP函數來檢測郵件和URL中的塊消息,然後將其替換爲它假定的。現在我需要在PHP中相同的功能,但我無法得到正確的正則表達式。誰能幫忙?jquery正則表達式匹配url和電子郵件

<?php 
function replace_chat_tags($chat_body=''){ 
    $chat_body = preg_replace('!(http|ftp|scp)(s)?:\/\/[a-zA-Z0-9.?=\-&_/]+!', "<a href=\"\\0\" target=\"_blank\">\\0</a>", $chat_body); 
    $chat_body = preg_replace('/\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/si', "<a href=\"mailto:\\0\">\\0</a>", $chat_body); 
    $chat_body = str_replace(array("&lt;br/&gt;"), "<br/>", $chat_body); 
    return $chat_body; 
} 
?> 

在JS

<script> 
function replace_chat_tags(chat_body){ 
var chat_body; 
    chat_body.replace(); //For urls 
    chat_body.replace(); // Email Link 
    chat_body.replace(); // I need this for a reason 
    return chat_body; 
} 
</script> 
+0

你已經擁有它在PHP中,現在你需要它在PHP?這個問題有些不對。 – trincot

回答

2

您可以用例如在線測試正則表達式的東西regex101。它也提供了JavaScript的風格。

總之:

function replace_chat_tags(chat_body = '') { 
 
    return chat_body 
 
    .replace(/((http|ftp|scp)(s)?:\/\/[a-zA-Z0-9.?=\-&_/]+)/g, "<a href=\"$1\" target=\"_blank\">$1</a>") 
 
    .replace(/\b([A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4})\b/gi, "<a href=\"mailto:$1\">$1</a>") 
 
    .replace(/&lt;br\/&gt;/g, "<br/>"); 
 
} 
 

 
console.log(replace_chat_tags('hello http://www.google.com [email protected]&lt;br/&gt;foo&lt;br/&gt;'));

不要忘記使用.innerHTML在你的元素將其追加。並且確保不要允許<script><a href="javascript:*">和任何<* on*="*">標籤。

我也建議只實施一次。可以將您的聊天消息轉換爲PHP或JS。