Intereting Posts
Как сохранить изображение через захват в android на php? HTML-код и вывод кода Auto-indent Не удается получить доступ к сохраненному идентификатору связанного объекта напрямую, не получая целую сущность Могу ли я слепо заменить все функции mysql_ на mysqli_? как сохранить <br/> теги при использовании Dom в php для анализа html-документа? Index.php как пользовательская страница ошибки Получать глобальные ежемесячные поисковые запросы Google Выберите строку, которая не существует в t2, на основе t1 mysql Тестирование модулей с SimpleTest в PHP, сохраняя ошибки файлового каталога относительно относительных путей? Что содержит PDOStatement и каково использование fetch / fetchAll? Как получить идентификатор сеанса в Laravel? PHP и MySQL не обновляют базу данных Параллельная обработка в PHP – Как вы это делаете? Force Загрузка файла PDF, поврежденный файл Сравнение нескольких многомерных подматриц друг с другом и слияния с порогом подобия

PHP: правильно конвертировать адреса в клики ссылки в строке

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

Предположим, что мои адреса сайта – www.mysite.com + wap.mysite.com + m.mysite.com, мне нужно конвертировать:

My pictures at m.mysite.com/user/id are great. 

чтобы:

 My pictures at <a href="/user/id" target="_blank">mysite.com/user/id</a> are great. 

Вопрос в том, как это сделать (с ereg_replace?) Вместо того, чтобы использовать тонны строк кода .

Обратите внимание, что результат должен быть относительным URL , так что текущий протокол и субдомен используются для целевой ссылки. Если пользователь находится в m поддомене версии HTTPS, целью будет m-поддомен протокола HTTPS и т. Д. Только ссылки на mysite.com должны быть связаны , любые другие ссылки должны рассматриваться как обычный обычный текст. Заранее спасибо!

Related of "PHP: правильно конвертировать адреса в клики ссылки в строке"

Сначала совет, держитесь подальше от ereg , он устарел долгое время. Во-вторых, вы, вероятно, можете google и экспериментировать, чтобы придумать выражение preg, которое хорошо работает для вас, поэтому настройте то, что у меня здесь, в соответствии с вашими потребностями.

Мне удалось собрать довольно простой шаблон регулярного выражения для поиска URL-адресов.

 preg_match("/m.mysite.com\S+/", $str, $matches); 

Если у вас есть URL-адреса, я бы предложил parse_url вместо regex.

И вот код

 $sSampleInput = 'My pictures at http://m.mysite.com/user/id are great.'; // Search for URLs but don't look for the scheme, we'll add that later preg_match("/m.mysite.com\S+/", $sSampleInput, $aMatches); $aResults = array(); foreach($aMatches as $sUrl) { // Tack a scheme afront the URL $sUrl = 'http://' . $sUrl; // Try validating the URL, requiring host & path if(!filter_var( $sUrl, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED|FILTER_FLAG_PATH_REQUIRED)) { trigger_error('Invalid URL: ' . $sUrl . PHP_EOL); continue; } else $aResults[] = '<a href="' . parse_url($sUrl, PHP_URL_PATH) . '" target="_blank">' . $sUrl . '</a>'; }