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

Форум PHP

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

 

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

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

тема: Проблемма с обработкой строк в PHP
 
 автор: Dizzer   (21.03.2007 в 09:56)   письмо автору
 
 

Здраствуйте уважаемые мастера.
У меня 2 вопроса:
1. В строке нужно заменить знак вопроса на знак точки. Делаю так:
$file_pic = ereg_replace('?', '.', $file_pic);
получаю предупреждение (Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT)
и пустое значение переменной $file_pic.
Как решить эту задачу?


2. В коде:
<?php

$row = mysql_fetch_assoc($result);
$file_pic="$row[ORIGINALTITLE] ($row[TRANSLATEDTITLE]).jpg";
//$file_pic = ereg_replace('?', '.', $file_pic);
$file_pic = "$DOCUMENT_ROOT/catalog/".$file_pic;
echo($file_pic);
if (file_exists("$file_pic")==false)
$file_pic="$DOCUMENT_ROOT/catalog/net.jpg";

echo("<CENTER><IMG SRC='$file_pic' ALT='$row[TRANSLATEDTITLE] / $row[ORIGINALTITLE] ($row[YEAR])'><BR></CENTER>");

?>

если в переменной $file_pic (хранящей путь и имя файла) встречается одинарная кавычка (') то после неё название файла обрывается т.е. если
$file_pic=C:/Apache2/htdocs/catalog/Knight's Tale, A (История рыцаря).jpg
то в итоге выполнения этого кода смотрю свойства картинки и вижу:
file:///C:/Apache2/htdocs/catalog/Knight
всё что после одинарной кавычки отрезалось
Подскажите пожалуйста как можно поступить в моём случае? Можно ли это сделать без переименовывания всех файлов содержащих в имени одинарную кавычку?
Спасибо.

   
 
 автор: ZuArt   (21.03.2007 в 10:09)   письмо автору
 
   для: Dizzer   (21.03.2007 в 09:56)
 

1)
$file_pic = ereg_replace('/\?/', '.', $file_pic);

   
 
 автор: Dizzer   (23.03.2007 в 13:43)   письмо автору
 
   для: ZuArt   (21.03.2007 в 10:09)
 

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

   
 
 автор: Trianon   (21.03.2007 в 10:15)   письмо автору
 
   для: Dizzer   (21.03.2007 в 09:56)
 

1. В строке нужно заменить знак вопроса на знак точки: $file_pic = str_replace('?', '.', $file_pic);
И не нужно применять функции, назначение которых неизвестно.

2.Заключайте имена файлов не в одинарные, а в двойные кавычки. А само имя прогоняйте через htmlspecialchars().
Bообще же такие имена лучше не применять.

   
 
 автор: Dizzer   (23.03.2007 в 13:11)   письмо автору
 
   для: Trianon   (21.03.2007 в 10:15)
 

>1. В строке нужно заменить знак вопроса на знак точки: $file_pic = str_replace('?', '.', $file_pic);
не нужно применять функции, назначение которых неизвестно.
Вы знаете как в строке заменить знак вопроса на знак точки?

>2.Заключайте имена файлов не в одинарные, а в двойные кавычки. А само имя прогоняйте через htmlspecialchars().
>Bообще же такие имена лучше не применять.
Заключить в двойные кавычки не получится, так как (если вы конечно заметили) оно (имя) используется внутри конструкции echo("..<HTML теги>...'$file_pic'....<HTML теги>....");
Подскажите как реализовать ваш ответ на практике?
Спасибо.

   
 
 автор: ZuArt   (23.03.2007 в 13:21)   письмо автору
 
   для: Dizzer   (23.03.2007 в 13:11)
 

Сорь - функция не та... =)
1) $file_pic = preg_replace('/\?/', '.', $file_pic);
2) заключить в двойные кавычки БОЛЕЕ чем получится, если их просто экранировать обратным слешем echo "..<HTML теги>..\"$file_pic\"....<HTML теги>....";

   
 
 автор: mihdan   (23.03.2007 в 13:27)   письмо автору
 
   для: Dizzer   (21.03.2007 в 09:56)
 

1. Народ, зачем велосипеды, зачем регулярки?


<?php
$str 
str_replace("?""."$str);
?>


работает в 16 раз быстрее

2. addslashes();

http://www.klax.tula.ru/~mihdan

   
 
 автор: Dizzer   (23.03.2007 в 13:50)   письмо автору
 
   для: mihdan   (23.03.2007 в 13:27)
 

Спасибо всем откликнувшимся на мою проблемму :)
В итоге помогло:
1. $file_pic = str_replace("?", ".", $file_pic);
2. ...IMG SRC=\"$file_pic\"...

Проблемма решена.

   
Rambler's Top100
вверх

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