Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как заменить строку вида [dbimg id="187" w="100" h="100"]
 
 автор: toproot   (28.12.2009 в 21:25)   письмо автору
 
 

как заменить строку вида [dbimg id="187" w="100" h="100"] примерно на следующее
<img src="dbimg.php?id=187&width=100&height=100"> ?

  Ответить  
 
 автор: big-trot   (28.12.2009 в 22:27)   письмо автору
 
   для: toproot   (28.12.2009 в 21:25)
 


$str = '[dbimg id="187" w="100" h="100"]';

$str = preg_replace('|\[(\w+)\s+id="(\d+)"\s+w="(\d)+"\sh="(\d)+"\s*\]|', '<img src="\1.php?id=\2&width=\3&height=\4">', $str);

  Ответить  
 
 автор: toproot   (28.12.2009 в 22:54)   письмо автору
 
   для: big-trot   (28.12.2009 в 22:27)
 

Width и Height получаются равны 0.
и почему замена производится только из строки в кавычках, а если добавить свою переменную - нет, удивительно
$p_name = $_POST['page_name'];
 $p_text = $_POST['content'];
 $iid = $_GET['id'];
 $p_text = str_replace("
","<center>",$p_text);
 $p_text = str_replace("
","</center>",$p_text);

$str = ''.$p_text.'[dbimg id="32295" w="100" h="100"]'; 

$p_text = preg_replace('|\[(\w+)\s+id="(\d+)"\s+w="(\d)+"\sh="(\d)+"\s*\]|', '<img src="\1.php?id=\2&width=\3&height=\4">', $str);

  Ответить  
 
 автор: big-trot   (29.12.2009 в 00:03)   письмо автору
 
   для: toproot   (28.12.2009 в 22:54)
 

Прошу прощение в опечатке

$str = preg_replace('|\[(\w+)\s+id="(\d+)"\s+w="(\d+)"\sh="(\d+)"\s*\]|', '<img src="\1.php?id=\2&width=\3&height=\4">', $str);


Не понял вопроса

почему замена производится только из строки в кавычках, а если добавить свою переменную - нет, удивительно

  Ответить  
 
 автор: toproot   (29.12.2009 в 02:24)   письмо автору
 
   для: big-trot   (29.12.2009 в 00:03)
 

$str = "text [dbimg id="... заменяется, а $str = $my_text нет. Удивительно. Обычный $_POST . Обработан только str_replace.

  Ответить  
 
 автор: big-trot   (29.12.2009 в 13:36)   письмо автору
 
   для: toproot   (29.12.2009 в 02:24)
 

Пришлите пример вашей строки, которая не работает

  Ответить  
 
 автор: toproot   (29.12.2009 в 16:50)   письмо автору
 
   для: big-trot   (29.12.2009 в 13:36)
 

 $p_text = $_POST['content'];
$p_text = preg_replace('|\[(\w+)\s+id="(\d+)"\s+w="(\d+)"\sh="(\d+)"\s*\]|', '<img src="\1.php?id=\2&width=\3&height=\4">', $p_text);

- Не заменяет вообще., хотя это обычный текст, и в нем есть [dbimg оно и остается.
$p_text = 'One two three [dbimg id="186" w="100" h="100"]  five ';
$p_text = preg_replace('|\[(\w+)\s+id="(\d+)"\s+w="(\d+)"\sh="(\d+)"\s*\]|', '<img src="\1.php?id=\2&width=\3&height=\4">', $p_text);

- Заменяет.

Вообщем - в строчке все нормально, а если эту строчку из ПОСТ принять - уже не заменяет.
Я сам не пойму у же чего тоько не перепробывал.

  Ответить  
 
 автор: Fractured#   (29.12.2009 в 14:27)   письмо автору
 
   для: toproot   (29.12.2009 в 02:24)
 

http://phpfaq.ru/debug

  Ответить  
 
 автор: toproot   (29.12.2009 в 16:44)   письмо автору
 
   для: Fractured#   (29.12.2009 в 14:27)
 

Поставил err_rep (e_all) . выдает кучу ошбок , но поповоду прег_реплейс ничо

  Ответить  
 
 автор: Fractured#   (29.12.2009 в 16:54)   письмо автору
 
   для: toproot   (29.12.2009 в 16:44)
 

Не, ну банально сделать
<?php
echo $my_str;

и сравнить с этой литеральной (во!) константой нельзя?

  Ответить  
 
 автор: toproot   (29.12.2009 в 16:57)   письмо автору
 
   для: Fractured#   (29.12.2009 в 16:54)
 

 echo $p_text;
$p_text = preg_replace('|\[(\w+)\s+id="(\d+)"\s+w="(\d+)"\sh="(\d+)"\s*\]|', '<img src="\1.php?id=\2&width=\3&height=\4">', $p_text);
 echo $p_text;

результат :
the text. and image - [dbimg id=\"186\" w=\"100\" h=\"100\"]the text. and image - [dbimg id=\"186\" w=\"100\" h=\"100\"]
тоесть до и после - одно и тоже.

кстати, СТОП, а откуда экранирование, у меня в форме техтареа \ нет

  Ответить  
 
 автор: toproot   (29.12.2009 в 17:13)   письмо автору
 
   для: Fractured#   (29.12.2009 в 16:54)
 

Как убрать экранирование ? или эсли оно так необходимо, какое регулярное выражение будет заменять вариант с обратными слешами перед "


ВСЕ НОРМАЛНО, УЖЕ ВСЕ ЗДЕЛАЛ. большое спасиБо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования