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

Форум PHP

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

 

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

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

тема: Помогите разобраться с функцией preg_replace
 
 автор: localGhost   (19.01.2005 в 04:43)   письмо автору
 
 

Вернее даже не с функцией самой а со строкой сомволов которые она вырезает.

<?
$str 
preg_replace ($line"",$str);
?>
 


так вот что должно быть в $line чтоб допустим остались только цифры, латинские буквы и знак _?

Где поподробней почитать про это можно?

   
 
 автор: Artem S.   (19.01.2005 в 06:09)   письмо автору
 
   для: localGhost   (19.01.2005 в 04:43)
 


<?
$line 
"[^A-Za-z0-9_]";
$str preg_replace ($line"",$str);
?>

[^A-Za-z0-9_] - знак "^" исключает то, кроме того, что находиться в квадратных скобках. Что вам и нужно.

   
 
 автор: cheops   (19.01.2005 в 12:40)   письмо автору
 
   для: localGhost   (19.01.2005 в 04:43)
 

Хм... об этом можно почитать в нашем справочнике (см. раздел. Синтаксис регулярных выражений). Из бумажных книг сейчас в продаже имеется книга Дж. Фридла "Регулярные выражения". Применительно к PHP, большая глава посвящённая приёмам работы с регулярными выражениями будет в нашей третьей книге "PHP 5 в примерах", но она выйдет только в районе мая.

http://www.softtime.ru/group/id_group=3

   
 
 автор: broker   (25.03.2005 в 18:14)   письмо автору
 
   для: cheops   (19.01.2005 в 12:40)
 

А можго ли использовать эту функцию в обьекте? я написал так

function color_set($string) {
    $string = preg_replace("/\003(\d+),(\d+)/e", "$this->cng_color($1,$2)", $string);   // 205-я строка
    $string = preg_replace("/\003(\d+)/e", "$this->cng_color($1,-1)", $string);
    for ($a = 0; $a<substr_count($string, "<font"); $a++) {
    $string .= "</font>";
    }
    return $string;
}


и тут дает такую ошибку

Parse error: syntax error, unexpected ',' in C:\server\htdocs\base.php(205) : regexp code on line 1
Fatal error: preg_replace() [function.preg-replace]: Failed evaluating code: (12,10) in C:\server\htdocs\base.php on line 205

   
 
 автор: cheops   (25.03.2005 в 22:06)   письмо автору
 
   для: broker   (25.03.2005 в 18:14)
 

Лучше строку
<?php
 $string 
preg_replace("/\003(\d+),(\d+)/e""$this->cng_color($1,$2)"$string);
?>

Заменить
<?php
 $string 
preg_replace("/\003(\d+),(\d+)/e"$this->cng_color($1,$2), $string);
?>

   
 
 автор: broker   (26.03.2005 в 18:25)   письмо автору
 
   для: cheops   (25.03.2005 в 22:06)
 

Я уже пробовал дает такую ошибку:

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in C:\server\htdocs\base.php on line 205

Думаю тут он не принимает $this->cng_color();

   
 
 автор: cheops   (26.03.2005 в 21:02)   письмо автору
 
   для: broker   (26.03.2005 в 18:25)
 

Погодите... а почему переменные называются $1 и $2? Так же нельзя называть переменные...

   
 
 автор: broker   (27.03.2005 в 00:17)   письмо автору
 
   для: cheops   (26.03.2005 в 21:02)
 

Эти переменные найденные переменные по указанном форме ( она у меня работает в обычном программе а в классе дает ошибку)

   
 
 автор: cheops   (27.03.2005 в 13:25)   письмо автору
 
   для: broker   (27.03.2005 в 00:17)
 

А нельзя их переименовать?

   
 
 автор: broker   (27.03.2005 в 13:49)   письмо автору
 
   для: cheops   (27.03.2005 в 13:25)
 

Конечно нет эти стандартные переменные (только они используются в двух вариантах)
Об этом тут написано http://www.softtime.ru/dic/id_dic=140&id_group=3

   
 
 автор: cheops   (27.03.2005 в 17:52)   письмо автору
 
   для: broker   (27.03.2005 в 13:49)
 

Ну там как бы немного по другому... Попробуйте либо так
<?php 
$string 
preg_replace("/\003(\d+),(\d+)/e""$this->cng_color(\\1,\\2)"$string); 
?>

Либо так
<?php 
$string 
preg_replace("/\003(\d+),(\d+)/e""$this->cng_color(\$1,\$2)"$string); 
?>

   
 
 автор: broker   (28.03.2005 в 00:26)   письмо автору
 
   для: cheops   (27.03.2005 в 17:52)
 

Первый вариант уже пробовал:

<?php
    $string 
preg_replace("/\003(\d+),(\d+)/e"$this->cng_color(\\1,\\2), $string);
    
$string preg_replace("/\003(\d+)/e"$this->cng_color(\\1,-1), $string);
?>

тоже дает ошибку:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\server\htdocs\base.php on line 205
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\server\htdocs\base.php on line 205
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\server\htdocs\base.php on line 205
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\server\htdocs\base.php on line 205
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\server\htdocs\base.php on line 206
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\server\htdocs\base.php on line 206
Parse error: syntax error, unexpected '<' in C:\server\htdocs\base.php(205) : regexp code on line 1
Fatal error: preg_replace() [function.preg-replace]: Failed evaluating code: <font style='color: #000000; background-color: #000080;'> in C:\server\htdocs\base.php on line 205

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

Parse error: syntax error, unexpected ',' in C:\server\htdocs\base.php(205) : regexp code on line 1 
Fatal error: preg_replace() [function.preg-replace]: Failed evaluating code: (12,10) in C:\server\htdocs\base.php on line 205 

А в обычном программе скрипт работает и ковычками и без них:
<?php
function color_set($string) {
    
$string preg_replace("/\003(\d+),(\d+)/e""cng_color($1,$2)"$string);
    
$string preg_replace("/\003(\d+)/e""cng_color($1,-1)"$string);
    for (
$a 0$a<substr_count($string"<font"); $a++) {    $string .= "</font>"; }
    return 
$string;
?>

   
 
 автор: XPraptor   (26.03.2005 в 12:01)   письмо автору
 
   для: broker   (25.03.2005 в 18:14)
 

Я только что положил пример использования preg_replace в теме Как ограничить str_replace. Если тебе не нужно использывать ждя замены регулярные выражения, а просто слова, то достаточно ограничить то слово которое меняем бакслэшами "/это меняем/" на "это".

   
 
 автор: broker   (28.03.2005 в 23:49)   письмо автору
 
   для: XPraptor   (26.03.2005 в 12:01)
 

Может кто нибуд знает другой способ , какие нибуд предложение?

   
 
 автор: OZ_   (15.08.2005 в 18:28)   письмо автору
 
   для: broker   (28.03.2005 в 23:49)
 


function textonly($str,$len)
{
        $str=trim($str);
          $str=preg_replace("|[^\w_\@\.\-]+|","",$str);
         if ($len>0) $str=substr($str,0,$len);
        return $str;
}

   
Rambler's Top100
вверх

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