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

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

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

 

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

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

тема: Некорректная запись preg_replace()
 
 автор: hxt   (24.01.2011 в 09:54)   письмо автору
 
 

В одной книге по PHP мне попалась вот такая конструкция:

<?php
preg_replace
('/[^a-zA-Z]/i'''$str)
?>


Вроде хороший и понятный пример регулярного выражения, но вот зачем здесь i, если и так написано: все, кроме строчных и заглавных букв?
Правильно ли я мыслю, что запись не совсем корректная?

  Ответить  
 
 автор: Trianon   (24.01.2011 в 11:18)   письмо автору
 
   для: hxt   (24.01.2011 в 09:54)
 

никакого нарушения нет.
Запись избыточная - да, но не некорректная.

  Ответить  
 
 автор: hxt   (24.01.2011 в 11:33)   письмо автору
 
   для: Trianon   (24.01.2011 в 11:18)
 

То есть, можно было записать так:
<?php 
preg_replace
('/[^a-z]/i'''$str
?> 

или вот так:
<?php 
preg_replace
('/[^a-zA-Z]/'''$str
?> 


Значит я хоть что-то уже начал понимать в программировании, раз выявил избыточную запись :-)

  Ответить  
 
 автор: dima4321   (24.01.2011 в 13:29)   письмо автору
 
   для: hxt   (24.01.2011 в 11:33)
 

А можно извратиться и написать так:

<?php  
preg_replace
('/[\W\d_]/i'''$str)  
?>

  Ответить  
 
 автор: neadekvat   (24.01.2011 в 13:56)   письмо автору
 
   для: dima4321   (24.01.2011 в 13:29)
 

Вам не кажется, что задачи "исключить ряд" и "разрешить конкретный ряд" - несколько различны?

  Ответить  
 
 автор: dima4321   (24.01.2011 в 13:59)   письмо автору
 
   для: neadekvat   (24.01.2011 в 13:56)
 

Кажется имено поэтому я и привел эквивалкент

\W--все кроме букв цифр и _
\d цифры
_

Итого имеем что удаляем все кроме букв

  Ответить  
 
 автор: neadekvat   (24.01.2011 в 14:43)   письмо автору
 
   для: dima4321   (24.01.2011 в 13:59)
 

А вдруг вы что-то забыли?

  Ответить  
 
 автор: dima4321   (24.01.2011 в 16:04)   письмо автору
 
   для: neadekvat   (24.01.2011 в 14:43)
 

<?php

ini_set
('display_errors',1); 
error_reporting(E_ALL); 

setlocale(LC_ALL'ru_RU.CP1251''rus_RUS.CP1251''Russian_Russia.1251'); 

$str='hello 3213 ; .>@';
  
$new=preg_replace('/[\W\d_]/i'''$str);   

echo 
$new;
?>

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

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