Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2012, 13:11   #1
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
Вопрос Проблема с сылками на хостинге

Здравствуйте
Написал скрипт для замены тегов типа
[\COLOR='red']text[\/COLOR] на <font color='red'>text</font>

И такой же скрипт для замены ссылок [\A][\/A]

А также для добавления пробелов внутри тегов если слова превышают 30 символов

На локалхосте оба скрипта работают как надо А вот на хостинге на тех страницах где присутствуют теги ссылки [\A][\/A] браузер выводит

Internet Explorer не может отобразить эту веб-страницу

Попробуйте сделать следующее:
Диагностика проблем подключения

Подробнее

Как будто страница отсутствует Теги COLOR заменяются без проблем

Вот скрипт замены тегов ссылки и добавление пробелов к длинным словам

$this->post_name-это переменная в которой находятся данные переданные методом $_POST

PHP код:
$what=" ";
$len=30;
if(
preg_match_all("/(?<=\[A href\=\')[^\s]*(?=\'\])/su"$this->post_name$matches))
{
foreach(
$matches[0] as $match)
{
if(
preg_match_all("/(?<=\[A href\=\'".$match."\'\])[^\s]*(?=\[\/A\])/su"$this->post_name$matches2))
{
foreach(
$matches2[0] as $match2)
{
if(
preg_match("/[^\s]{".$len.",}/su"$match2))
{
$po=preg_replace("/([^\s]{".$len."})/su""$0{$what}"$match2);
$this->post_name=str_replace("[A href='".$match."']".$match2."[/A]""[A href='".$match."']".$po."[/A]"$this->post_name);
}
}
}
$this->post_name=str_replace("[A href='".$match."']""<a href='".$match."'>"$this->post_name);
}
$this->post_name=str_replace("[/A]""</a>"$this->post_name);

Подскажите что может быть не так

Спасибо за внимание
gunsoy вне форума Ответить с цитированием
Старый 12.08.2012, 14:50   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Вы вообще тестировали работу своих регулярных выражений без данного php скрипта? Очень советую начать с этого. По мне, так там куча ошибок
Cronos20 вне форума Ответить с цитированием
Старый 12.08.2012, 17:21   #3
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

Тестировал и в общем работало нормально

Вот код тестирования

PHP код:
<?php
$post
="abcd [COLOR='red']Red1red2red3red4red5[/COLOR] И еще чтото [COLOR='blue']Синий[/COLOR]
[A href='asdasdasdasdasdasdas']123456789012345678901234567890Ssilka[/A] 
ыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыыы
И [IMG src='cr.jpg'] [COLOR='green']Зеленый123456789012345678901234567890123456789012345678901234567890[/COLOR] [COLOR='red']Red[/COLOR] End"
;


$what=" ";
$len=30;
if(
preg_match_all("/(?<=\[COLOR\=\')[^\s]*(?=\'\])/su"$post$matches))
{
foreach(
$matches[0] as $match)
{
if(
preg_match_all("/(?<=\[COLOR\=\'".$match."\'\])[^\s]*(?=\[\/COLOR\])/su"$post$matches2))
{
foreach(
$matches2[0] as $match2)
{
if(
preg_match("/[^\s]{".$len.",}/su"$match2))
{
$what=" ";
$po=preg_replace("/([^\s]{".$len."})/su""$0{$what}"$match2);
$post=str_replace("[COLOR='".$match."']".$match2."[/COLOR]""[COLOR='".$match."']".$po."[/COLOR]"$post);
}
}
}
$post=str_replace("[COLOR='".$match."']""<font color='".$match."'>"$post);
}
}
$post=str_replace("[/COLOR]""</font>"$post);

if(
preg_match_all("/(?<=\[A href\=\')[^\s]*(?=\'\])/su"$post$matches))
{
foreach(
$matches[0] as $match)
{
if(
preg_match_all("/(?<=\[A href\=\'".$match."\'\])[^\s]*(?=\[\/A\])/su"$post$matches2))
{
foreach(
$matches2[0] as $match2)
{
if(
preg_match("/[^\s]{".$len.",}/su"$match2))
{
$po=preg_replace("/([^\s]{".$len."})/su""$0{$what}"$match2);
$post=str_replace("[A href='".$match."']".$match2."[/A]""[A href='".$match."']".$po."[/A]"$post);
}
}
}
$post=str_replace("[A href='".$match."']""<a href='".$match."'>"$post);
}
}
$post=str_replace("[/A]""</a>"$post);

if(
preg_match_all("/(?<=\[IMG src\=\')[^\s]*(?=\'\])/su"$post$matches))
{
foreach(
$matches[0] as $match)
{
$post=str_replace("[IMG src='".$match."']""<img src='".$match."' />"$post);
}
}

if(
preg_match_all("/[^\s]{30,}/su"$post$matches))
{
foreach(
$matches[0] as $match)
{
if(!
preg_match("/(?:color\=\')|(?:href\=\')|(?:src\=\')|(?:<\/font>)|(?:<\/a>)/su"$match))
{
$po=preg_replace("/([^\s]{30})/su""$0{$what}"$match);
$post=str_replace($match$po$post);
}
}
}
echo 
$post;
?>
Если скопировать это в php-файл и запустить То в браузер будет выведен текст с заменеными тегами и вставленными пробелами в длинных словах

Я не имею большого опыта работы с регулярными выражениями Можете подсказать в чем ошибки?
gunsoy вне форума Ответить с цитированием
Старый 12.08.2012, 23:56   #4
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Тестировать нужно не так. есть специальные онлайн сервисы например. Тем более у вас там сложные регулярки. Именно поэтому и не подскажу. Регулярные выражения нужно писать и тестировать блоками. Вы говорите опыта с ними у вас мало, а пытаетесь в них писать условия? Извините, даже не буду пробовать их разбирать и тестировать)
Cronos20 вне форума Ответить с цитированием
Старый 13.08.2012, 08:20   #5
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

Спасибо за ответ Проблема действительно в регулярном выражении
Заменил регулярку на

PHP код:
$this->post_name=str_replace("[A href='""<a href='"$this->post_name);
$this->post_name=str_replace("']""'>"$this->post_name);
$this->post_name=str_replace("[/A]""</a>"$this->post_name); 
И страници с сылками нормально отображаются

Но все равно нужно довести их до ума Киньте кто-нибудь ссылку на специальный онлайн сервис
gunsoy вне форума Ответить с цитированием
Старый 13.08.2012, 10:16   #6
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Google рулит ;-)
astecenko вне форума Ответить с цитированием
Старый 13.08.2012, 11:52   #7
gunsoy
Форумчанин
 
Регистрация: 30.12.2010
Сообщений: 280
По умолчанию

Решил проблему Регулярные выражения не работали из-за присутствия с тегах http:// наверное ^\s не действует на : или /
gunsoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транспортирование ячеек с сылками на другой лист Irek11 Microsoft Office Excel 7 24.11.2011 10:50
Ассоциация программы с сылками в браузере MyIE Общие вопросы Delphi 0 21.04.2010 20:14
Проблема конекта к базе на хостинге. sniffer PHP 2 14.07.2009 17:04