Попытка преобразовать простой текст URL в действительную ссылку.
У меня проблема в том, что моя ссылка может содержать буквы обаанглийский (A-Z / a-z) и иврит (אבגדהוזחטיכךלמםנןסעפףצץקרשת).
Используя функцию PHP urlencode(), мне удалось получить правильный формат для иврита, но я не могу найти правильный способ преобразования его в ссылку.
Мой код на данный момент (не работает с буквами иврита):
$replyText = preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href = "$1" target = "_blank">$1</a>', $replyText);
Пример URL-адреса, который мне нужно преобразовать в ссылку:
google.co.il%2F%D7%A9%D7%9C%D7%95%D7%9D_Hello.html
Станет:
Если вы хотите кодировать URL-адреса, используйте preg_replace_callback.






Вам просто нужно заменить %2F => /, поэтому ваша ссылка будет: google.co.il/%D7%A9%D7%9C%D7%95%D7%9D_Hello.html
Несмотря на то, что, как я полагаю, вы опубликовали для представления желаемого результата, если бы это было моей задачей, я думаю, что у меня было бы значение href в теге <a> и читаемый человеком текст ссылки.
Код: (Демо)
$replyText = "google.co.il%2F%D7%A9%D7%9C%D7%95%D7%9D_Hello.html";
echo '<a href = "', str_replace('%2F','/',$replyText), '">', urldecode($replyText), '</a>';
Исходный код вывода:
<a href = "google.co.il/%D7%A9%D7%9C%D7%95%D7%9D_Hello.html">google.co.il/שלום_Hello.html</a>
Эффективный выход:
google.co.il/ שלום_ Hello.html
Обратите внимание, что когда вы наводите указатель мыши на ссылку, в строке состояния вашего браузера все равно будет отображаться незакодированный URL.
Если вы используете модификатор u,
\wтакже может сопоставлять буквы иврита.