Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: HTML + PHP -> PHP
Форумы портала PHP.SU » PHP » Регулярные выражения » HTML + PHP -> PHP

Страниц (1): [1]
 

1. koldya - 28 Апреля, 2010 - 21:16:42 - перейти к сообщению
Здравствуйте, у меня стала проблема что бы вывести строку типа " text <?=$x ?> text " а мне надо превратить с помощью регулярных выражений или чего то другого в строку типа " <?='text'.$x.'text'; "
2. movEAX - 29 Апреля, 2010 - 08:38:00 - перейти к сообщению
Если я правильно понял задачу, то попробуйте так:
PHP:
скопировать код в буфер обмена
  1. $pattern = '@(.+?)<\?=\$(\w+?)\s*\?>(.+)@s';
  2. $replacement = '<?=\'$1\'.$2.\'$3\'; ?>';
  3. preg_replace ($pattern, $replacement, $text);
3. JustUserR - 03 Мая, 2010 - 01:56:45 - перейти к сообщению
koldya пишет:
Здравствуйте, у меня стала проблема что бы вывести строку типа " text <?=$x ?> text " а мне надо превратить с помощью регулярных выражений или чего то другого в строку типа " <?='text'.$x.'text'; "
То есть вам нужно превратить данные типа файла PHP-скрипта в чистый PHP-код который может быть выполнен с помощью функции eval например
В таком случае используйте набор из трех регулярных выражений - для обработки вывода до первого <?php-тега и после последнего ?>-тега - а также посредине
CODE (htmlphp):
скопировать код в буфер обмена
  1. s/^(.*?)\<php/<?php echo "$1"; \n/igs
  2. s/^(.*?)?\>(.*?)\<php/echo "$1";\n/igs
  3. s/?\>(.*?)$/echo "$1"; ?>\n/igs
Не забывайте что подставляемые таким образом в echo данные нужно проэкранировать - соответственно перед выполнением такого сгенерированного кода
4. koldya - 03 Мая, 2010 - 13:28:37 - перейти к сообщению
JustUserR, Если у меня есть строка

CODE (htmlphp):
скопировать код в буфер обмена
  1. $text = "<p>Тут какой то текст</p> <? include('post.php'); ?> <p>И тут текст'</p> ";

Тогда мне надо что делать что бы получилось:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $text = "<p>Тут какой то текст</p> <? include('post.php'); ?> <p>И тут текст'</p> ";
  2. s/^(.*?)\<php/<?php echo "$text"; \n/igs
  3. s/^(.*?)?\>(.*?)\<php/echo "$text";\n/igs
  4. s/?\>(.*?)$/echo "$text"; ?>\n/igs

или как???
5. JustUserR - 04 Мая, 2010 - 09:45:54 - перейти к сообщению
koldya пишет:
Тогда мне надо что делать что бы получилось:
Приведенные регулярные выражения выбирают весь текст вне тегов <?php ?> и соответственно заменяют его на echo - то есть приведенный вами тексто должен преобразоваться в один <?php ?>-блок и внутри него добавлятся два вывода echo
Сами регулярные выражения написаны на Perl - и их нужно обрамить в кавычки и положить вовнутрь функции preg_replace
6. DeepVarvar - 04 Мая, 2010 - 10:08:15 - перейти к сообщению
а зачем такой гемор?

хтмлэнтитиес(ваша строка)
7. koldya - 04 Мая, 2010 - 12:55:55 - перейти к сообщению
DeepVarvar пишет:
а зачем такой гемор?
хтмлэнтитиес(ваша строка)

htmlentities — Преобразует символы в соответствующие HTML сущности.
А как оно мне тут поможет???
8. DeepVarvar - 04 Мая, 2010 - 14:01:27 - перейти к сообщению
ну а ты попробуй выведи в браузер строку которую тебе надо, предварительно сделав как я сказал... и увидишь КАК поможет.. ))
9. JustUserR - 04 Мая, 2010 - 15:54:52 - перейти к сообщению
DeepVarvar пишет:
Хтмлэнтитиес(ваша строка)
Здесь вы к сожалению неправы - поскольку речь по сути идет о переводе обычного кода PHP-скрипта позволяющего делат HTML-встаки - в вид исполняемого PHP-кода с заменой всех текстовых блоков на опертор echo
10. koldya - 04 Мая, 2010 - 16:17:00 - перейти к сообщению
JustUserR пишет:
Сами регулярные выражения написаны на Perl - и их нужно обрамить в кавычки и положить вовнутрь функции preg_replace

Можешь написать а то я уже не соображаю Улыбка
11. JustUserR - 05 Мая, 2010 - 09:16:47 - перейти к сообщению
koldya Перепишите оставшиеся выражения вот в таком виде
PHP:
скопировать код в буфер обмена
  1. preg_match("/^(.*?)\<php/ig","<?PHP echo \"\1\"; \n",&array())

 

Powered by ExBB FM 1.0 RC1