Я уверен, что это очень простой, очевидный ответ, но мой мозг обжарен, и я просто не могу его получить. У меня есть сайт PHP, который позволяет пользователям публиковать информацию в текстовое поле в mySQL. Сообщения могут быть просмотрены онлайн. Поле представляет собой текстовое поле в форме HTML, когда оно находится в режиме пост / редактирования и статический текст в режиме чтения. Пользователи хотят иметь URL-адрес в своих сообщениях и отображать его как ссылку на клики, без необходимости включать HTML-код в поле (которое я не хочу, чтобы они могли делать все равно – слишком рискованно). это то, что нужно сделать, когда данные отображаются, вместо того, чтобы вставлять html в текст, когда он сохраняется в базе данных.
Код для дисплея довольно прост:
$query = "SELECT * FROM meetings where id=".$_GET['id']; $result = mysqli_query($dbc, $query) or die('Error querying database'); $rows = mysqli_fetch_array($result); echo "<p><div id=\"articleBody\">". $rows['body']. "</div></p>";
Есть ли функция, которую я могу разместить вокруг $ rows ['body'], которая будет отображать что-нибудь, начиная с http в качестве кликабельной ссылки? Помните, что переменная может содержать или не содержать URL.
Используйте preg_replace
чтобы выполнить следующее:
$html = preg_replace('"\b(http://\S+)"', '<a href="$1">$1</a>', $rows['body']) echo "<p><div id=\"articleBody\">".$html."</div></p>";
$out = $rows['body']; echo "<p><div id='articleBody'>"; if(substr($out,0,4)=='http') { echo "<a href='#'>".$out."</a>"; } else { echo $out; } echo "</div></p>";