[PHP] Возможно ли удалить так дубли?

T
На сайте с 28.06.2007
Offline
82
795

Подскажите пожалуйста есть ли решение моей проблемы на PHP?

Нужно удалить дубли из текста, пример:

<?php

$text="текст1==текст2
текст3==текст1
текст8==текст20
текст1==текст9
текст1==текст10";
?>
Нужно чтобы осталось:

текст1==текст2

текст3==текст1
текст8==текст20
Т.е. нужно удалять всю строку если первое вхождение уже повторялось. Разделитель ==

Можно выгрузить всё в базу SQL и там выполнить запрос:

ALTER IGNORE TABLE tablica ADD UNIQUE KEY (stolbec1);
Но хочется найти решение на PHP.
AlexVenga
На сайте с 10.04.2007
Offline
190
#1

Можно создать массив и в него закидывать значения...

Исходный текст експлодить

Если сам не сможешь - пиши помогу

AlexVenga добавил 28.06.2009 в 03:34

<?php

$text="текст1==текст2

текст3==текст1

текст8==текст20

текст1==текст9

текст1==текст10";

$temp=explode("\n",$text);

$i=0;

$new_array=Array();

while (isset($temp[$i]))

{

$tp=explode("==",$temp[$i]);

if (!isset($new_array[$tp[0]]))

{

$new_array[$tp[0]]=$tp[1]

}

$i++;

}

$text="";

foreach ($new_array AS $key=>$value)

$text.=$key."==".$value."\n";

?>

вот и всё

AlexVenga добавил 28.06.2009 в 03:39

Trol:
т.е. нужно удалять всю строку если первое вхождение уже повторялось.

По этому данная проверка только по первому ключу, если уникальность по обоим ключам (как в вашем SQL запросе), то строчка

if (!isset($new_array[$tp[0]]))

должна выглядеть как

if (!isset($new_array[$tp[0]])&&($new_array[$tp[0]]!=$tp[1]))
Антикризисное предложение: [Бурж, AdSense] [NEW] Сайты - каталоги компаний с гарантией трафа [Дорого] (/ru/forum/1006462)
T
На сайте с 28.06.2007
Offline
82
#2

AlexVenga, спасибо огромное! Работает как надо :)

AlexVenga
На сайте с 10.04.2007
Offline
190
#3

Да незачто.

В принципе наверное ещё ускорить можно, если объёмы приличные....

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий