#javascript #php #html
#javascript #php #HTML
Вопрос:
Я работаю над кодом, который усекает запись базы данных и помещает ее на веб-страницу, но из-за усечения он часто обрывается в середине тега привязки ссылки. Обычно я могу справиться с этим, регулируя количество извлекаемых символов, но поскольку для отображения одновременно извлекается 5 записей, я в конечном итоге возвращаюсь назад и вперед при поиске процентного баланса, поскольку я могу настроить символы, что исправляет одну запись, но вызывает другую проблему с другой записью.
Мне нужно придумать способ, чтобы функция php автоматически закрывала их, чтобы они не вызывали проблем и не превращали страницу в гигантскую ссылку.
$SQL = "SELECT * FROM Words WHERE Date_Created = DATE('2016-10-06') AND category = 'Article' ORDER BY ID DESC LIMIT 5";
$result = mysql_query($SQL);
while($row = mysql_fetch_array($result))
{
echo '<div class="storylist2">';
echo "<br/>";
echo '<h2><a href="http://www.AHA.com/words/display_art.php?ID='.$row['ID'].'">' .stripslashes($row['Title']). '</a></h2>';
$s = stripslashes($row['Word']);
$s = substr($s, 0,800); //adjust as necessary
$s = substr($s, 0, strrpos($s, "."));
$s .= "...";
echo '<h6>'. $row['Display_Date'].'</h6>';
echo '<h6>'. $row['Author']. '</h6>';
echo closetags("$s");
echo "<br/>";
if($row['url'] != "")
{
echo "<br/>";
echo '<span class="articlelink">(<a href="http://www.AHA.com/words/display_art.php?ID='.$row['ID'].'">more</a>)';
echo "<br/>";
}
else {
echo "<br/>";
echo '(<a href="http://www.AHA.com/words/display_art.php?ID='.$row['ID'].'">more</a>)</span>';
echo "<br/>";
}
echo "<br/>";
echo "<br/>";
echo "</div><hr style="color: #006699; margin: 10px 20px; "/>";
Я перечислил выше код, который у меня есть в настоящее время для извлечения записей на веб-страницу, я слышал, что есть способ убедиться, что усечение не прерывается в середине тега, но, честно говоря, я не знаю, как это сделать. Также за последние несколько дней я нашел некоторый PHP, который закрывает теги, на которые ссылается this echo closetags("$s");
, но, к сожалению, я не смог приступить к работе с тегами привязки. Пожалуйста, помогите, спасибо!
Комментарии:
1. Пожалуйста, перефразируйте свой вопрос. Я думаю, что речь идет только об удалении тегов шрифтов? И вы не должны использовать mysql_query, а pdo или mysqli среди прочего
2. Нет, не об удалении тегов шрифтов, а о том, что незакрытые теги html, в частности привязка, закрыты с помощью функции php, я перефразирую свой вопрос, извините за путаницу. Я знаю, что мне нужно поработать над изменением его на mysqli, я откладывал это, пока не исправлю это.
3. Это
if ($count=1)
присваивание, и оно будет постоянно оцениваться как true. Отправьте текст из базы данных через htmlspecialchars(), прежде чем записывать его как html. Это позволяет избежать текста, нарушающего ваш синтаксис html.4. Хорошо, я удалил оператор
if ($count=1)
and else, поскольку это было необходимо после удаления IF . htmlspecialchars () работает, но он заставляет его отображаться в их формате html, но мне нужно отображать в обычном текстовом формате, поскольку это отображается на небольшом новостном сайте, и отображение в формате html не имеет смысла5. О, теперь я думаю, что понимаю, что вы имеете в виду.
$row['Word']
это длинный HTML-текст, и вы хотите сократить его, не нарушая его синтаксис. Боюсь, вам придется использовать simplexml amp; Co: создайте дерево из вашего html-текста, напишите его и, когда вы написали достаточно символов, закройте ожидающие открытия теги.
Ответ №1:
Вы можете удалить <a>
теги и оставить только текст привязки для любой строки, запустив ее через preg_replace перед ее усечением:
$no_a_tags = preg_replace('/<a.*?>([^>]*)</a>/i', '$1', $with_a_tags);