Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: perl :: поиск и замена
Форумы портала PHP.SU » PHP » PEAR и PECL » perl :: поиск и замена

Страниц (1): [1]
 

1. Телевизор - 28 Апреля, 2011 - 15:18:29 - перейти к сообщению
Не могу догнать и faq что то не очень помогает:
Когда загружаю файл он обрабатывается идя через js > php > perl и вывод результатов в xml файле.
в конфиге php регулярном выражении присутствует амперсанд &
дык этот амперсанд в xml файле и вызывает синтаксическую ошибку.
Генерирует xml файл сам perl и вот думаю решить эту проблему с амперсандом в xml
добавив строку в perl поиск и замена, заменив & на &
Но блин у меня не получается... буду Вам признателен.
вот сам скрипт perl, надеюсь джустусер или кто-нибудь зная поможет с перл:

В 17 строке переменная $config{$config_setting} вот в этой переменной и находится инклуденая регулярное выражение в котором и присутствует амперсанд.
CODE (perl):
скопировать код в буфер обмена
  1. ##########################################################################
  2. #       Write a XML file containing configuration upload and post information
  3. ##########################################################################
  4. sub write_uu_file{
  5.         my $file_handle = shift;
  6.         my $config = shift;
  7.         my $uploaded_files = shift;
  8.         my @names = $query->param;
  9.  
  10.         binmode $file_handle;
  11.  
  12.         $file_handle->print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  13.         $file_handle->print("<uu_upload>\n");
  14.         $file_handle->print("   <config>\n");
  15.  
  16.         # Write config values
  17.         foreach my $config_setting (sort keys(%config)){ $file_handle->print("          <$config_setting>$config{$config_setting}<\/$config_setting>\n"); }
  18.  
  19.         $file_handle->print("   <\/config>\n");
  20.         $file_handle->print("   <post>\n");
  21.  
  22.         #Write post values
  23.         foreach my $key (@names){
  24.                 my @post_values = $query->param($key);
  25.  
  26.                 foreach my $post_value (@post_values){
  27.                         $post_value =~ s/&/&/g;
  28.                         $post_value =~ s/</</g;
  29.                         $post_value =~ s/>/>/g;
  30.                         $post_value =~ s/'/&apos;/g;
  31.                         $post_value =~ s/"/"/g;
  32.  
  33.                         # Search and replace non-latin characters below. eg.
  34.                         # $post_value =~ s/й/e/g;
  35.                         # $post_value =~ s/ь/ue/g;
  36.                         # $post_value =~ s/д/ae/g;
  37.                         # $post_value =~ s/л/e/g;
  38.                         # $post_value =~ s/ф/o/g;
  39.  
  40.                         $key =~ s/[^a-zA-Z0-9\_\-]//g;
  41.  
  42.                         $file_handle->print("           <$key>$post_value<\/$key>\n");
  43.                 }
  44.         }
  45.  
  46.         $file_handle->print("   <\/post>\n");
  47.         $file_handle->print("   <file>\n");
  48.  
  49.         # Write upload file info
  50.         for my $file_slot (keys %uploaded_files){
  51.                 my $file_name = $uploaded_files{$file_slot}{'file_name'};
  52.                 my $file_size = $uploaded_files{$file_slot}{'file_size'};
  53.                 my $file_type = $uploaded_files{$file_slot}{'file_type'};
  54.                 my $file_status = $uploaded_files{$file_slot}{'file_status'};
  55.                 my $file_status_description = $uploaded_files{$file_slot}{'file_status_desc'};
  56.  
  57.                 $file_handle->print("           <file_upload>\n");
  58.                 $file_handle->print("                   <slot>$file_slot<\/slot>\n");
  59.                 $file_handle->print("                   <name>$file_name<\/name>\n");
  60.                 $file_handle->print("                   <size>$file_size<\/size>\n");
  61.                 $file_handle->print("                   <type>$file_type<\/type>\n");
  62.                 $file_handle->print("                   <status>$file_status<\/status>\n");
  63.                 $file_handle->print("                   <status_desc>$file_status_description<\/status_desc>\n");
  64.                 $file_handle->print("           <\/file_upload>\n");
  65.         }
  66.  
  67.         $file_handle->print("   <\/file>\n");
  68.         $file_handle->print("<\/uu_upload>\n");
  69.         $file_handle->close();
  70.  
  71.         chmod 0666, $file_handle;
  72. }
2. Телевизор - 04 Мая, 2011 - 14:39:41 - перейти к сообщению
чевота все молчат, Можт я задал вопрос не корректно ?

я пытался из 27-38 строки взять поиск и замену но что то получается, то вообще не ищет то пятисотая ошибка.

 

Powered by ExBB FM 1.0 RC1