Автор Тема: PHP проблем с preg_replace()  (Прочетена 3303 пъти)

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
PHP проблем с preg_replace()
« -: Nov 11, 2010, 19:19 »
Здравейте , нещо което на пръв поглед ми изглеждаше елементарно се оказа ,че доста ме изтормози , и накара да пиша тук . Та значи имам си един стринг искам всичко в него което е различно от буква да се превръща в интервал . ето го и кода  :
Код
GeSHi (PHP):
  1. $EN_STRING = $_POST['entext'];
  2.  
  3.  
  4. $UNALLOW  = array();
  5.  
  6.  
  7. $UNALLOW[0] = '/\$/';
  8. $UNALLOW[1] = '/%/';
  9. $UNALLOW[2] = '/&/';
  10. $UNALLOW[3] = '/\'/';
  11. $UNALLOW[4] = '/\(/';
  12. $UNALLOW[5] = '/\)/';
  13. $UNALLOW[6] = '/*/';
  14. $UNALLOW[7] = '/+/';
  15. $UNALLOW[8] = '/\,/';
  16. $UNALLOW[9] = '/./';
  17. $UNALLOW[10] = '/\//';
  18. $UNALLOW[11] ='/^[0-9]$/';
  19. $UNALLOW[12] = '/:/';
  20. $UNALLOW[13] = '/;/';
  21. $UNALLOW[14] = '/</';
  22. $UNALLOW[15] = '/=/';
  23. $UNALLOW[16] = '/>/';
  24. $UNALLOW[17] = '/?/';
  25. $UNALLOW[18] = '/@/';
  26. $UNALLOW[19] = '/[/';
  27. $UNALLOW[20] = '/]/';
  28. $UNALLOW[21] = '/^/';
  29. $UNALLOW[22] = '/_/';
  30. $UNALLOW[23] = '/`/';
  31. $UNALLOW[24] = '/{/';
  32. $UNALLOW[25] = '/|/';
  33. $UNALLOW[26] = '/}/';
  34. $UNALLOW[27] = '/~/';
  35. $UNALLOW[28] = '/$/';
  36. $UNALLOW[29] = '/!/';
  37. $UNALLOW[30] = '/"/';
  38.  
  39.  
  40.  
  41. //////////////////////////////////////////////////////////////////////
  42.  
  43. $replace = ' ';
  44.  
  45. echo preg_replace($UNALLOW, $replace, $EN_STRING);
  46.  
  47.  
и ето грешката в браузера : Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in /var/www/file.php on line 45
« Последна редакция: Nov 11, 2010, 19:48 от chen_dzen »
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #1 -: Nov 11, 2010, 19:28 »
Скандален код. Защо не направиш един pattern:
Код
GeSHi (PHP):
  1. $UNALLOW = '/\/\$\'.../'

PS: Чакай, че мисленето тази вечер ми е малко трудно. Всъщност с един възможно ли е да стане? Може би греша?

Но за 15 ред съм съгурен, че не е така. Според мен трябва да е:
Код
GeSHi (PHP):
  1. $UNALLOW[10] = '/\//';

14-ти:
Код
GeSHi (PHP):
  1. $UNALLOW[10] = '/\./';

От 16, до 25:
Код
GeSHi (PHP):
  1. $UNALLOW[10] = '/^[0-9]$/';
« Последна редакция: Nov 11, 2010, 19:34 от backtolife »
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #2 -: Nov 11, 2010, 19:36 »
Офф много съм смотан!!! Искаш само букви еми ок:
Код
GeSHi (PHP):
  1. $pattern = '/^[^a-zA-Z]$/'

Георги Чорбаджийски на една лекция каза: "Не проверявайте за грешно въведени данни, проверявайте за правилно въведени такива."
« Последна редакция: Nov 11, 2010, 19:39 от backtolife »
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #3 -: Nov 11, 2010, 19:46 »
Направих го 0-9 но грешката е същата . Не ме разбираш символите ще ги има просто искам да ги игнорирам .

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #4 -: Nov 11, 2010, 19:51 »
Код
GeSHi (PHP):
  1. $output = preg_replace('/[^A-Za-z]/', ' ', $input);
Ако и това не работи вече не знам...

Ако input-а ти е на български:
Код
GeSHi (PHP):
  1. $output = preg_replace('/[^А-Яа-я]/u', ' ', $input);
« Последна редакция: Nov 11, 2010, 20:01 от backtolife »
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #5 -: Nov 11, 2010, 19:59 »
Обратния ефект някои ако мойе да ми помогне да го постигна . Иначе благодаря backtolife .  [_]3

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #6 -: Nov 11, 2010, 19:59 »
Обратния ефект някои ако мойе да ми помогне да го постигна . Иначе благодаря backtolife .  [_]3

Кой обратен ефект?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #7 -: Nov 11, 2010, 20:03 »
ами в момента всички тези символи зе заменят с интервал а аз искам само те а не се променят .  ;)

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #8 -: Nov 11, 2010, 20:06 »
ами в момента всички тези символи зе заменят с интервал а аз искам само те а не се променят .  ;)

До колкото чета в 1-вия пост искаш всичко което не е буква да става на интервал нали?

ами в момента всички тези символи зе заменят с интервал а аз искам само те а не се променят .  ;)
Кои те?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #9 -: Nov 11, 2010, 20:10 »
Символите А-Za-z

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #10 -: Nov 11, 2010, 20:14 »
Код
GeSHi (PHP):
  1. $output = preg_replace('/[^A-Za-z]/', ' ', $input);
Ако и това не работи вече не знам...

Ако input-а ти е на български:
Код
GeSHi (PHP):
  1. $output = preg_replace('/[^А-Яа-я]/u', ' ', $input);

Това трябва да работи бе??? Значи [a-zA-Z] - напасва всички букви от азбуката. [^a-zA-Z] - всички символи които са различни от азбуката. Сигурен ли си че имаш "^" в pattern-а?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #11 -: Nov 11, 2010, 20:21 »
аааааааааааааааааааааааааа кланям ти се ти си велик човече !

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: PHP проблем с preg_replace()
« Отговор #12 -: Nov 11, 2010, 20:21 »
аааааааааааааааааааааааааа кланям ти се ти си велик човече !

Стана ли? Така би трябвало да работи.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #13 -: Nov 11, 2010, 20:22 »
да супер е благодаря ти много  [_]3  [_]3  [_]3  [_]3

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: PHP проблем с preg_replace()
« Отговор #14 -: Nov 11, 2010, 20:28 »
Вече си ми идол .  :D  ;D  :D