次の正規表現:
$common_tlds = 'us|me|com|net|org|ly|be|edu|gov|uk|ca|de|jp|fr|au|ru|ch|it|nl|se|no|es|mil|co';
$regex = '#(?:https?://)?([^.\s]+(?:[^\s.]|[^\s][^\s.])*\.(?:' . $common_tlds . ')[^.\s]*)#i';
ここで使用:
preg_replace($regex,'<a href="http://$1" target="_blank">$1</a>', $text);
PREG_BACKTRACK_LIMIT_ERROR
非常に短いテキストで私に与えています。テキストの一例は次のとおりです。
Life cant always give you the best shoes,handbags,clothes but it can give you the best creations.
オンラインで正規表現を見つけるためのより良いリンクがあることは知っていますが、正規表現の何が大規模なバックトラッキングを引き起こしているのか、どうすればそれを改善できるのかに興味がありました。ありがとう!