Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парсер BBS-code, [StrReplace?,Замена текста] 
V
    Опции темы
NNaarreekk
Дата 20.2.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Код

$text="T1_****_T1, _T1";

Вместо звездочек может быть любой текс, как заменить его на скажем:
Код

$text="T2_****_T2, _T1";

????????
PM MAIL WWW   Вверх
solenko
Дата 20.2.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Регулярным выражением


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
GeneralElectric
Дата 20.2.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 0
Всего: 16



Лучше пример давать не абстрактный, а конкретный.
А то задача получается невнятная, и люди будут стараться, писать код - а окажется, что зря.

PM MAIL   Вверх
skyboy
Дата 20.2.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



регулярные выражения помогут. 
единственное замечание: тебе надо точно понимать, как должен обрабатывать строку компьютер.
к примеру, вот ты говоришь:
Цитата(NNaarreekk @  20.2.2008,  16:01 Найти цитируемый пост)
Вместо звездочек может быть любой текс

А если вместо звездочек будет "_Т1, "? то есть итоговая строка будет:
Код

T1__T1, _T1, _T1

Как и на что её надо заменять?
Вобщем, в любом случае надо поставить задачу поиска/замены так, чтоб ты сам мог однозначно говорить, что менять и на что. В противном случае никакие способы не помогут решить изначально нерешаемую задачу ;)
PM MAIL   Вверх
NNaarreekk
Дата 20.2.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Задача проста:

[a href=http://www.google.com]Google[/a] ===> <a href='http://www.google.am'>Google</a>
PM MAIL WWW   Вверх
FractalizeR
Дата 20.2.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4



Хм... Фишинг какой-то...


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
NNaarreekk
Дата 20.2.2008, 18:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Цитата

Хм... Фишинг какой-то...

Не знаю что это такое, но вы правы!

Это сообщение отредактировал(а) NNaarreekk - 20.2.2008, 18:56
PM MAIL WWW   Вверх
NNaarreekk
Дата 25.2.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Обращаюсь к модераторам!
Если можно переместите меня назад в "Общие вопросы", а то как я понял этот раздел спит, а геморой остается :(:(
PM MAIL WWW   Вверх
skyboy
Дата 26.2.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(NNaarreekk @  25.2.2008,  21:53 Найти цитируемый пост)
а то как я понял этот раздел спит

по всей видимости, люди не хотят помогать фишинг-сайт ваять. а тема размещается не по уровню "спания", а по адекватности вопроса в теме разделу.
PM MAIL   Вверх
NNaarreekk
Дата 26.2.2008, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Цитата(skyboy @  26.2.2008,  00:02 Найти цитируемый пост)
люди не хотят помогать фишинг-сайт ваять

Блин, может кто нибудь мне обяснит что это такое!
PM MAIL WWW   Вверх
skyboy
Дата 26.2.2008, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



фишинг можно было просто забить в строку поиска google'a. fishing - разновидность интернет-мошенничества. подделка сайта известной компании с целью выманивания персональной информации.
PM MAIL   Вверх
skyboy
Дата 26.2.2008, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



вот регулярка:
Код

$text= '...обрабатіваемій текст...';
preg_replace('#\[a\s*href=(\S*?).*\](.*)\[/a\]#U','<a href="$1">$2</a>',$text); 

PM MAIL   Вверх
NNaarreekk
Дата 26.2.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Цитата(skyboy @  26.2.2008,  00:28 Найти цитируемый пост)
разновидность интернет-мошенничества. подделка сайта известной компании с целью выманивания персональной информации. 

A что это реально???? Круто!

На самом деле я просто форум пишу, вот для чего этот код!

А на счет фишинга, если смогу кокую нибудь полезную информацию украсть то обязательно поделюсь! smile  smile  smile 



skyboy, Спсибо за код! (+)
PM MAIL WWW   Вверх
NNaarreekk
Дата 26.2.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Появилась новая проблема:
Код

$text= '[a href=www.google.am]Google[/a]';
preg_replace('#\[a\s*href=(\S*?).*\](.*)\[/a\]#U','<a href="$1">$2</a>',$text);

Если так то все ОК!

НО! Все таки это проклятое 'но' появилось!
Код

$text= '[a href=www.google.am][font color=#ffffff]Google[/font][/a]'; // Если еще узер хочет цвет поменять
preg_replace('#\[a\s*href=(\S*?).*\](.*)\[/a\]#U','<a href="$1">$2</a>',$text);

Выдает
Код

<a href="www.google.am][font color=center]asdasdasdasdas[/font"></a>


То еть на скока я понял он находит последний "]", а не первый!
PM MAIL WWW   Вверх
GeneralElectric
Дата 26.2.2008, 11:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 0
Всего: 16



Мне кажется, пора ехать в центр помощи.
Человеку нужен навороченный парсер ББ-кодов, при этом никакой новой информации для себя он не извлекает, никак данный ему код не анализирует, а просто говорит "так работает, а так нет. дайте другой!". Ну так это в центр помощи по определению. имхо.

Если не в гугль за готовым парсером. Но учить пользоваться гуглем - это тоже, вроде, не по профилю PHP: Тексты 

Это сообщение отредактировал(а) GeneralElectric - 26.2.2008, 11:21
PM MAIL   Вверх
mishaSL
Дата 26.2.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Код

<?php

$text= '[a href=www.google.am][font color=#ffffff]Google[/font][/a]';

$reg = '#\[([a-z]+)\s+([a-z]+)=([^\]]+)\](.*)\[/\1\]#U';
while (preg_match($reg, $text) != 0) {
    $text = preg_replace('#\[([a-z]+)\s+([a-z]+)=([^\]]+)\](.*)\[/\1\]#U','<$1 $2="$3">$4</$1>',$text);
}
print $text;

?>


А вообще лучше изучить работу регулярных выражений.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
NNaarreekk
Дата 26.2.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Цитата(mishaSL @  26.2.2008,  13:18 Найти цитируемый пост)
А вообще лучше изучить работу регулярных выражений. 

Не сыпте соль на рану :(:(:(

Я нефига не понимаю в регулярных выражениях, уже год пытаюсь учить smile  smile  smile 
За код спасибо!

Но в этом случае если чел напишет скжем
Код

$text="[script type=text/Javascript]alert(this)[/script]";


Код все равно сработает, я прав?


Хотя легче в отдельности проверить естц ли в коде что нибудь подобное! smile 
PM MAIL WWW   Вверх
mishaSL
Дата 26.2.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Цитата(NNaarreekk @  26.2.2008,  13:37 Найти цитируемый пост)
Код все равно сработает, я прав?

Хотя легче в отдельности проверить естц ли в коде что нибудь подобное!


Да. Вы правы. Это был пример для вашего случая. Если делать более менее нормально, то нужно создать массив с разрешенными тегами и заменять только, то что нужно. К примеру так:

Код

<?php
// допустим этот текст пришел от пользователя. К примеру так: $text = $_POST['text'];
$text= '[script]alert();[/script][a href=www.google.am][font color=#ff0000]Google[/font][/a]';
// вырезали теги, можно еще проверок добавить на всякий случай.
$text = strip_tags($text);
//массив с поиском
$arrSearch = array('#\[a\s+href=([^\]]+)\](.*)\[/a\]#U',
                   '#\[font\s+color=([^\]]+)\](.*)\[/font\]#U',
                   '#\[b\](.*)\[/b\]#U',
                   '#\[u\](.*)\[/u\]#U'  
                    );
//массив с заменами
$arrReplace = array('<a href="$1">$2</a>',
                   '<font color="$1">$2</font>',
                   '<b>$1</b>',
                   '<u>$2</u>'
                    );
//делаем замену                    
$text = preg_replace($arrSearch,$arrReplace,$text);
//убираем лишние bb коды, если они есть
$text = preg_replace('#\[.*\]#isU', '', $text);
print $text;
?>




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
NNaarreekk
Дата 26.2.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



mishaSL, код то что доктор прописал!

Спасибо большое!

Добавлено через 4 минуты и 18 секунд
ЛЮДИ НАШЕЛ ИНТЕРЕСНУЮ ВЕШЬ ПРО РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ!
PM MAIL WWW   Вверх
mishaSL
Дата 26.2.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Цитата(NNaarreekk @  26.2.2008,  14:07 Найти цитируемый пост)
Спасибо большое!

Всегда пожалуйстаsmile


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
NNaarreekk
Дата 27.2.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Еще один вопросик и тему можно считаь закрытым!
Код
 
$text=preg_replace('#\[FONT\s+color=([^\]]+)\](.*)\[/font\]#U','<font color="$1">$2</font>',$text);

Kaк можно сделать, чтоб не учитывался регистр?
Пробовал:
Код
 
$text=preg_replace('#\[FONT/i\s+color=([^\]]+)\](.*)\[/font/i\]#U','<font color="$1">$2</font>',$text); 
$text=preg_replace('#\[(FONT)/i\s+color=([^\]]+)\](.*)\[/(font)/i\]#U','<font color="$1">$2</font>',$text);
//Даже пробовал
 $text=preg_replace('#\[[(FONT)(font)]\s+color=([^\]]+)\](.*)\[/[(FONT)(font)]\]#U','<font color="$1">$2</font>',$text);


Никак smile 
PM MAIL WWW   Вверх
mishaSL
Дата 27.2.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Цитата(NNaarreekk @  27.2.2008,  16:28 Найти цитируемый пост)
Kaк можно сделать, чтоб не учитывался регистр?

Вот так:
Код

<?php
// допустим этот текст пришел от пользователя. К примеру так: $text = $_POST['text'];
$text= '[script]alert();[/script][a href=www.google.am][font color=#ff0000]Google[/font][/a]';
// вырезали теги, можно еще проверок добавить на всякий случай.
$text = strip_tags($text);
//массив с поиском
$arrSearch = array('#\[a\s+href=([^\]]+)\](.*)\[/a\]#iU',
                   '#\[font\s+color=([^\]]+)\](.*)\[/font\]#iU',
                   '#\[b\](.*)\[/b\]#iU',
                   '#\[u\](.*)\[/u\]#iU'  
                    );
//массив с заменами
$arrReplace = array('<a href="$1">$2</a>',
                   '<font color="$1">$2</font>',
                   '<b>$1</b>',
                   '<u>$2</u>'
                    );
//делаем замену                    
$text = preg_replace($arrSearch,$arrReplace,$text);
//убираем лишние bb коды, если они есть
$text = preg_replace('#\[.*\]#isU', '', $text);
print $text;
?>


Добавлено через 1 минуту и 44 секунды
NNaarreekk, т.е. модификатор "i".
Подробнее


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
NNaarreekk
Дата 27.2.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Блин, ну все попробовал кроме этого i в конце! smile 

Еще раз спасибо!

Наверно уже темку закрою!

Это сообщение отредактировал(а) NNaarreekk - 27.2.2008, 18:30
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.