文字列内のURLを識別する目的のコードを継承していますが、存在しない場合はhttp://プロトコルの前に追加してください。php regex preg_replace_callback
return preg_replace_callback(
'/((https?:\/\/)?\w+(\.\w{2,})+[\w?&%=+\/]+)/i',
function ($match) {
if (stripos($match[1], 'http://') !== 0 && stripos($match[1], 'https://') !== 0) {
$match[1] = 'http://' . $match[1];
}
return $match[1];
},
$string);
ドメインにハイフンがある場合を除いて動作しています。したがって、インスタンスの場合、次の文字列は部分的にしか動作しません。
$string = "In front mfever.com/1 middle http://mf-ever.com/2 at the end";
どのような正規表現の天才に間違いがありますか?
'\ w'は文字、数字、' _'のみに一致します。許可された文字で文字クラスを使用する必要があります。 '[\ w-] 'もハイフンにマッチすると言ってください。 –
提供されているソリューションのいずれかが機能している場合は、必ずそれを受け入れてください。 – mega6382