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

Форум PHP

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

 

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

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

тема: Уникальные значения в массивах
 
 автор: ZC   (21.01.2006 в 21:55)   письмо автору
 
 

Имеется такой код

<?php
    
// Функция для извлечения инфомации из файла и помещения 
    // ее в переменную
    
function FileToContent($filename)
    {
    
        
// Открываем файл для чтения
        
$fid fopen($filename"r");
        
$textresult "";
        
// Если файл не открывается. то выводим сообщение об ошибке
        
if(!$fid) echo "Запрашиваемая страница не найдена";
        else
        {
        
            
// Читаем содержимое файла в переменную $textresult
            
while(!feof($fid))    $textresult .= fgets($fid4096);            
        
        }
        
// Закрываем открытый указатель файла $fid
        
fclose($fid);
        
// Возвращаем содержимое страницы поисковой системы
        
return $textresult;
    
    }
    
// Функция для сохранения адресов электронной почты в файл
    
function ContentToFile($filename$content)
    {
    
        
// Открываем файл для его сохранения
        
$fid fopen($filename"a+");
        
// Записываем адрес в файл
        
fwrite($fid$content."\r\n");
        
// Возвращаем значение true
        
return true;        
    
    }
    
// Помещаем содержимое файла в переменную $content
    
$content FileToContent("dump.sql");
    
// Вырезаем адреса электронной почты из этого файла 
    // и заносим их в массив
    
$array_email = array();
    
$pattern "|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}|i";
    
preg_match_all($pattern$content$array_email);
    
// Выводим каждый адрес в одной строке в виде таблицы
    
echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" class=\"table\">
            <tr class=\"header\">
                <td class=\"field\">Адреса электронной почты</td>
            </tr>"
;
    
// Выводим строки
    
foreach($array_email[0] as $address)
    {
        
// Сохраняем адреса электронной почты в афйл 
        // email_base.txt
        
ContentToFile("email_base.txt"$address);
        
// Выводим строку
        
echo "<tr><td>".$address."</td></tr>";    
    }
    
// Выводим завершение таблицы
    
echo "</table>";
?>


Как сделать так, чтобы все повоторяющиеся значения в массиве были удалены. То есть, чтобы в массиве были только уникальные значения

   
 
 автор: cheops   (21.01.2006 в 22:02)   письмо автору
 
   для: ZC   (21.01.2006 в 21:55)
 

Пропустите массив $array_email через функцию array_unique().

   
 
 автор: ZC   (22.01.2006 в 16:45)   письмо автору
 
   для: cheops   (21.01.2006 в 22:02)
 

Спасибо.

   
 
 автор: ZC   (22.01.2006 в 17:09)   письмо автору
 
   для: cheops   (21.01.2006 в 22:02)
 

Хотя нет. Вот сделал все как надо, но все равно адреса повторяются.

<?php
    
// Выполняем соединение с базой джанных
    
include_once "config.php";
    
// Задаем значения переменых страницы
    
if(!isset($pagetitle)) $pagetitle "Главная страница администрирования сайта";
    if(!isset(
$pagehelp)) $pagehelp "";
    if(!isset(
$pagemenu)) $pagemenu 0;
    
// Подключаем шапку страницы
    
include_once "utils/topadmin.php";
    
// Функция для извлечения инфомации из файла и помещения 
    // ее в переменную
    
function FileToContent($filename)
    {
    
        
// Открываем файл для чтения
        
$fid fopen($filename"r");
        
$textresult "";
        
// Если файл не открывается. то выводим сообщение об ошибке
        
if(!$fid) echo "Запрашиваемая страница не найдена";
        else
        {
        
            
// Читаем содержимое файла в переменную $textresult
            
while(!feof($fid))    $textresult .= fgets($fid4096);            
        
        }
        
// Закрываем открытый указатель файла $fid
        
fclose($fid);
        
// Возвращаем содержимое страницы поисковой системы
        
return $textresult;
    
    }
    
// Функция для сохранения адресов электронной почты в файл
    
function ContentToFile($filename$content)
    {
    
        
// Открываем файл для его сохранения
        
$fid fopen($filename"a+");
        
// Записываем адрес в файл
        
fwrite($fid$content."\r\n");
        
// Возвращаем значение true
        
return true;        
    
    }
    
// Помещаем содержимое файла в переменную $content
    
$content FileToContent("fics.sql");
    
// Вырезаем адреса электронной почты из этого файла 
    // и заносим их в массив
    
$array_email = array();
    
$pattern "|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}|i";
    
preg_match_all($pattern$content$array_email);
    
// Удаляем повторяющиеся значения из массива $array_email
    
$new_array_email array_unique($array_email);
    
// Выводим каждый адрес в одной строке в виде таблицы
    
$dx 100/3;
?>
    <table cellpadding="0" cellspacing="0" width="100%" class="table">
        <tr class="header">
            <td width="<?php echo $dx."%"?>" class="field">Адрес</td>
            <td width="<?php echo $dx."%"?>" class="field">Логин</td>
            <td width="<?php echo $dx."%"?>" class="field">Сервер</td>
        </tr>
<?php    
    
// Выводим строки
    
foreach($new_array_email[0] as $address)
    {
        
// Сохраняем адреса электронной почты в файл
        // email_base.txt
        
ContentToFile("email_base.txt"$address);
        
// Разбиваем строку на две части
        
$pieces explode("@"$address);
        
$login  $pieces[0];
        
$server "www.".$pieces[1]; 
        
// Выводим строку
        
echo "<tr><td><a href=\"mailto:".$address."\">".$address."</a></td><td><b>".$login."</b></td><td><a href=http://".$server.">".$server."</a></td></tr>";    
    }
?>    
    </table>
<?php    
    
// Подключаем низ страницы
    
include_once "utils/bottomadmin.php";
?>

   
 
 автор: ZC   (22.01.2006 в 21:01)   письмо автору
 
   для: ZC   (22.01.2006 в 17:09)
 

Может кто-нить поможет

   
 
 автор: cheops   (22.01.2006 в 22:58)   письмо автору
 
   для: ZC   (22.01.2006 в 17:09)
 

Проверьте, повторные адреса - нет там в конце никаких невидимых символов или ещё что-то в этом духе?

   
 
 автор: ZC   (22.01.2006 в 23:32)   письмо автору
 
   для: cheops   (22.01.2006 в 22:58)
 

Да вроде нет никаких скрытых символов.

   
Rambler's Top100
вверх

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