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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения, Поиск в тексте нужного кода. 
:(
    Опции темы
sayber
Дата 28.8.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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




Я вот пытаюсь понять как работают регулярки но неполучается их использовать.

Мне надо в тексте найти теги  <php> </php> а все что в них засунуть в функцию highlight_string();

<?
$text = 's kdjfhjks k sdfhkjsdh kjfsdlj56456456 4456 asdas <php>PHP код</php>s dkfjsjkdhjkh sdjkf';

$s = preg_match('/<php>(.*)<\/php>/', $text, $s);

print $s;
?>

Так код выводит 1 (я так понимаю один раз нашел совпадения???)

Это сообщение отредактировал(а) sayber - 28.8.2006, 23:38
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
faost
Дата 28.8.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Можно сделать вот так:

Код

<?

$text = 's kdjfhjks k sdfhkjsdh kjfsdlj56456456 4456 asdas <php>PHP код</php>s dkfjsjkdhjkh sdjkf';

if (preg_match('~<php>(.*?)</php>~is', $text, $s)) {
    echo $s[1];
}

?> 


Почему выводит 1 - читай RTFM
--------------------
Если у вас нет проблем, значит вы уже умерли
PM MAIL   Вверх
ewolf
Дата 29.8.2006, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



preg_match_all
PM MAIL ICQ   Вверх
sayber
Дата 29.8.2006, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо но с этим я по другому разобрался.

В продолжении проблемы: 
Теперь мне надо найденое в этом коде

Код

$text = 's kdjfhjks k sdfhkjsdh kjfsdlj56456456 4456 asdas <php> PHP ЗРЗ</php>s dkfjsjkdhjkh sdjkf';

$text = preg_replace('#<php>(.*?)</php>#', '<table><tr><td width="400" bgcolor="#f0f0f0" style="padding:8px; border:1px solid #666666">$0</td></tr></table>', $text);

print $text;



то есть $0 вставить в highlight_string();

Одним словом мне надо чтоб получилось что то типа этого

Код

$text = preg_replace('#<php>(.*?)</php>#', "<table><tr><td width=\"400\" bgcolor=\"#f0f0f0\" style=\"padding:8px; border:1px solid #666666\">highlight_string($0);</td></tr></table>", $text);
//highlight_string($0);


Это сообщение отредактировал(а) sayber - 29.8.2006, 00:28
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
sayber
Дата 29.8.2006, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо ! Все разобрался

Кому надо берем пример.

Код


$text = 's kdjfhjks k sdfhkjsdh [php]<?=zamena(nl2br(htmlspecialchars(substr($arr['comm'],0,100))))?> [/php]  kjfsdlj56456456 4456 asdas <php> PHP ЗРЗ</php>s dkfjsjkdhjkh sdjkf';

$text = preg_replace("#\[php\](.+)\[/php\]#ie", '"<table><tr><td width=\"400\" bgcolor=\"#f0f0f0\" style=\"padding:8px; border:1px solid #666666\">".highlight_string(html_entity_decode("\\1"), true)."</td></tr></table>"', $text);

print $text;


Только есть проблемма.... Код не работает с переменными

Цитата

Parse error: parse error, unexpected T_BAD_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in E:\server\Sites\home\xsd\www\1.php(14) : regexp code on line 1

Fatal error: preg_replace(): Failed evaluating code: &quot;&lt;table&gt;&lt;tr&gt;&lt;td width=\&quot;400\&quot; bgcolor=\&quot;#f0f0f0\&quot; style=\&quot;padding:8px; border:1px solid #666666\&quot;&gt;&quot;.highlight_string(html_entity_decode(&quot;&lt;?=zamena(nl2br(htmlspecialchars(substr($arr[\'comm\'],0,100))))?&gt; &quot;), true).&quot;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&quot; in E:\server\Sites\home\xsd\www\1.php on line 14


Это сообщение отредактировал(а) sayber - 29.8.2006, 01:40
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 29.8.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 32
Всего: 69



sayber, наверное все таки вот так:
Код

$text = preg_replace('#\[php\](.*)\[/php\]#ie', "'<table><tr><td width=\"400\" bgcolor=\"#f0f0f0\" style=\"padding:8px; border:1px solid #666666\">'.highlight_string(html_entity_decode('\\1'), true).'</td></tr></table>'", $text);



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
sayber
Дата 29.8.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Неработает так.

Может у кого есть BBcode php парсер??? Пример??  smile 

Только вот этот не надо BBCode_Wrapper
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 29.8.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 32
Всего: 69



sayber, как это не работает?! Проверяй лучше, у меня пашет отлично:
Код

<?php

$text = 's kdjfhjks k sdfhkjsdh [php]<?=zamena(nl2br(htmlspecialchars(substr($arr[\'comm\'],0,100))))?> [/php]  kjfsdlj56456456 4456 asdas <php> PHP ЗРЗ</php>s dkfjsjkdhjkh sdjkf';

$text = preg_replace('#\[php\](.*)\[/php\]#ie', "'<table><tr><td width=\"400\" bgcolor=\"#f0f0f0\" style=\"padding:8px; border:1px solid #666666\">'.highlight_string(html_entity_decode('\\1'), true).'</td></tr></table>'", $text);

echo $text;

?>



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
sayber
Дата 29.8.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да но если ввести вот так

Код

$text = 's kdjfhjks k sdfhkjsdh

[php]<?=zamena(nl2br(htmlspecialchars(substr($arr[\'comm\'],0,100))))

?> [/php]  

kjfsdlj56456456 4456 asdas <php> PHP ЗРЗ</php>s dkfjsjkdhjkh sdjkf';

--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
faost
Дата 29.8.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



Что-то я не догнал, нужен код между [php] и [/php] или между <php> и </php>?
--------------------
Если у вас нет проблем, значит вы уже умерли
PM MAIL   Вверх
ewolf
Дата 29.8.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По-моему, лучше вот так

Код

$text = 's kdj"""\\\\fhjks k sdfhkjsdh [php]<?=zamena(nl2br(htmlspecialchars(substr($arr["comm"],0,100))))?> [/php]  kjfsdlj56456456 4456 asdas <php> PHP ЗРЗ</php>s dkfjsjkdhjkh sdjkf';

    $text = preg_replace("#\[php\](.*?)\[/php\]#isem", "'<table><tr><td width=\"400\" bgcolor=\"#f0f0f0\" style=\"padding:8px; border:1px solid #666666\">'.highlight_string(stripslashes('\\1'), true).'</td></tr></table>'", $text);

    print $text;


т.е. без html_entity_decode

ЗЫ. На данном форуме же есть подсветка php, так что можно попросить кусок исходника smile

Это сообщение отредактировал(а) ewolf - 29.8.2006, 16:18
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 29.8.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 32
Всего: 69



sayber, а модификатор /s не судьба поставить???

Добавлено @ 16:22 
вот здесь:
Код

#\[php\](.*)\[/php\]#ies

И будет тебе счастье.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
sayber
Дата 29.8.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



-=Ustas=-,  Спасибо!, Вопросов больше нет.
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
sayber
Дата 29.8.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Принимайте кому надо

Код

function replace_parcer3 () {


$_POST['comments'] = str_replace('<script>', '', $_POST['comments']);
$_POST['comments'] = str_replace('alert', '', $_POST['comments']);
$_POST['comments'] = preg_replace('/http:\/\/[^\s]+/', '<a href="$0" alt="$0">$0</a>', $_POST['comments']); 
$row['comments'] = preg_replace('#\[php\](.*)\[/php\]#ies', "'<table><tr><td width=\"400\" bgcolor=\"#f0f0f0\" style=\"padding:8px; border:1px solid #666666\">'.highlight_string(html_entity_decode('\\1'), true).'</td></tr></table>'", $row['comments']);


}


Это сообщение отредактировал(а) sayber - 29.8.2006, 17:05
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~WoW CafeSayber ©  Портфолио ~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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