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

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

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

 

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

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

тема: Замена одних символов другими
 
 автор: ladan   (01.01.2012 в 11:08)   письмо автору
 
 

Нужно в переменной найти символы ' \ и автоматически их переименовать в " /, скажите пожалуйста какая функция такое делает. Проблема в том, что если человек в форме укажет одиночные ' \, в базу ничего не запишется.


Пока что смог разобраться как находить эти символы и выводить человеку на экран сообщение, что нельзя их использовать.

<?
if(preg_match("/['\\\]/i"$text)) {/* выводим ошибку */}


?>

  Ответить  
 
 автор: cheops   (01.01.2012 в 14:20)   письмо автору
 
   для: ladan   (01.01.2012 в 11:08)
 

Вам нужна функция preg_replace() или str_replace().

  Ответить  
 
 автор: ladan   (01.01.2012 в 17:19)   письмо автору
 
   для: cheops   (01.01.2012 в 14:20)
 

Спасибо!

  Ответить  
 
 автор: ladan   (01.01.2012 в 17:43)   письмо автору
 
   для: ladan   (01.01.2012 в 17:19)
 


<?

$a 
= array("/['\\\]/i","/яблоко/i");


echo 
preg_replace("$a[0]"""$_GET['author'])
?>


а как сделать так, чтобы кроме поиска символов ' \ можно было еще искать дополнительные слова, к примеру "яблоко"?

За один заход можно такое сделать? или лучше два раза прописать preg_replace?

  Ответить  
 
 автор: cheops   (01.01.2012 в 18:33)   письмо автору
 
   для: ladan   (01.01.2012 в 17:43)
 

Вы же можете передавать preg_replace() в качестве параметров массивы, т.е. нужно по аналогии с $a создать массив $b с таким же количеством элементов, как и в $a и передать в качестве второго параметра.

  Ответить  
 
 автор: ladan   (01.01.2012 в 19:42)   письмо автору
 
   для: cheops   (01.01.2012 в 18:33)
 

Не, я имел ввиду, как передать в качестве первого параметра "/['\\\]/" и "/яблоко/". Для второго параметра задано одно и тоже- пустота. В первом параметре должен идти поиск этих символов или слово "яблоко" :)

  Ответить  
 
 автор: cheops   (01.01.2012 в 20:10)   письмо автору
 
   для: ladan   (01.01.2012 в 19:42)
 

Я понял, ответ не меняется, первый параметр передавайте как есть в виде массива, но и второй параметр тоже должен быть массивом пустых строк.

PS Как вариант можно использовать или |, но лучше все-таки воспользоваться массивами, особенно, если вариантов замены много.

  Ответить  
 
 автор: ladan   (01.01.2012 в 20:39)   письмо автору
 
   для: cheops   (01.01.2012 в 20:10)
 

ясненько


<?

$a 
= array("/['\\\]/i","/яблоко/i");

$b = array("","");

$_GET['author'] = preg_replace("$a[0]""$b[0]"$_GET['author']);
$_GET['author']= preg_replace("$a[1]""$b[1]"$_GET['author']);

echo 
$_GET['author'];


<?


все верно выводится, как мне надо, но кажется, я неправильно пользуюсь массивами, ведь можно как-то один раз прописать функцию preg_replace?

  Ответить  
 
 автор: ladan   (01.01.2012 в 21:22)   письмо автору
 
   для: ladan   (01.01.2012 в 20:39)
 

а все, разобрался, ковычки у переменных в этой функции не нужно ставить :)

<?
$a 
= array("/['\\\]/i","/яблоко/i");
echo 
preg_replace($a""$_GET['author']);
?>

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

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