Member 13679413 Ответов: 2

Помоги мне найти ошибку


Я запрограммировал, что если вы введете текст между [link] и [/link], он будет вводить ссылку. Это работало раньше, но теперь ссылка не работает. Мне это нужно в PHP. Пожалуйста, помогите мне определить ошибку. ($ms - это текст)
например, [ссылка]example.com[/ссылка] вход = в < а href="https://example.com"и GT;https://example.com< /а&ГТ; вывод в базу данных

ИСПРАВЛЕНО

Так и должно быть +6 и -6 не +3, а-3
Я оооочень тупая

Должно быть так:
$link = substr($ms, (strpos($ms, "[link]")+6), (strpos($ms, "[/link]")-strpos($ms, "[link]")-6));


Нет:
$link = substr($ms, (strpos($ms, "[link]")+3), (strpos($ms, "[/link]")-strpos($ms, "[link]")-3));


Что я уже пробовал:

$ms = $row['inp'];
if(strpos($ms, "[link]") !== false and strpos($ms, "[/link]") !== false) {
	$link = substr($ms, (strpos($ms, "[link]")+3), (strpos($ms, "[/link]")-strpos($ms, "[link]")-3));
	$ms = str_replace("[link]", "<a href="http://$link" class="url" target="_blank">http://", $ms);
	$ms = str_replace("[/link]", "</a>", $ms);
}

Member 13679413

Спасибо за помощь, но оказалось, что я слепой идиот, и проблема была у меня перед носом!! Извините, что отнял у вас время.

2 Ответов

Рейтинг:
6

W∴ Balboos, GHB

Вложение одинарных и двойных кавычек в строки, особенно те, которые должны быть активны каким-то образом (например, ваша ссылка), - это особый вид ада. В частности, при построении строк и передаче их в качестве параметров между клиентом/сервером/php/javascript/чем угодно.

Хороший способ избежать проблем-использовать операторы ECHO и alert() на различных этапах, чтобы определить, правильно ли вы вложили кавычки.

Это проще, если у вас есть синтаксическая раскраска в вашем редакторе. Я всегда настраиваю свой редактор так, чтобы в каждом языке, который я использую, строки выделялись другим цветовым фоном, как правило, что-то вроде "одинарная кавычка" и "двойная кавычка".

Если вы сделаете это и вставите строку echo'D в свой Редактор, вы увидите неправильно отформатированную строку из-за разрывов в непрерывности фона. Не всегда, но очень часто.


Nelek

Это работает до тех пор, пока нет ошибки с scaped строками, как это имеет редактор CP :)

Рейтинг:
0

Richard MacCutchan

Заявление $ms = str_replace("[link]", "<a href="http://$b" class="url" target="_blank">http://", $ms); содержит ряд неэскапированных символов двойных кавычек. Так и должно быть:

$ms = str_replace("[link]", "<a href=\"http://$b\" class=\"url\" target=\"_blank\">http://", $ms);