|
|
|
| Здравствуйте!
есть строка
<html>
<a class=gallery2 rel=group title='Название фотокарточки' href=gl/2014-12-02_22-59-38.jpg> <img src=gl/mini/2014-12-02_22-59-39.jpg /></a>
</html>
|
Как вытащить названия файлов 2014-12-02_22-59-38.jpg и 2014-12-02_22-59-39.jpg и записать в переменные? | |
|
|
|
|
|
|
|
для: Sarat
(02.12.2014 в 18:37)
| | И откуда же они берутся эти ссылки? | |
|
|
|
|
|
|
|
для: confirm
(02.12.2014 в 20:22)
| | из базы выводятся фотографии, необходимо нужный файл удалять, его больше никак не вычислить | |
|
|
|
|
|
|
|
для: Sarat
(03.12.2014 в 06:26)
| | Если в базе, то зачем ковыряться в ссылках?
Что именно содержится в базе, как записаны имена файлов? | |
|
|
|
|
|
|
|
для: confirm
(03.12.2014 в 06:31)
| | Придется ковыряться, больше никак. Каждая строка в текстовом поле записана так -
<a class=gallery2 rel=group title='Название фотокарточки' href=gl/2014-12-02_22-59-38.jpg> <img src=gl/mini/2014-12-02_22-59-39.jpg /></a>
Отличаются только имена файлов и названия фотокарточек.
Больше нигде сведений о файлах нет, на странице вывод простой этой строки.
Даже если средствами php просматривать содержимое каталога gl и gl/mini, то во первых там черт ногу сломит, как говориться, во-вторых невозможно (или очень сложно) найти сходства большой фотографии и миниатюры и удалить обе.
А строка, написанная выше, отличная зацепка, только я регулярные выражения недавно начал изучать, незнаю как составить. Вы бы подсказали, а? | |
|
|
|
|
|
|
|
для: Sarat
(03.12.2014 в 07:38)
| | А кто вас заставлял записывать а базу это, а не просто имя файла? Неужто сложно было бы формировать эту строку при выводе данных из базы?
Строка выше, если не обуславливается необходимостью, например, это часть html-кода от визуального редактора, это не "отличная зацепка", а необдуманность. | |
|
|
|
|
|
|
|
для: confirm
(03.12.2014 в 07:57)
| | Ну сейчас самый простой способ это сделать так! Есть простая учебная задача, зачем вы так умничаете? | |
|
|
|
|
|
|
|
для: Sarat
(03.12.2014 в 08:08)
| | Я не умничаю, а вот сознательно создавать для себя проблемы, а потом их "героически" решать, это далеко от умного подхода к решению задачи. Задачи как раз решать надо так, чтобы данные и их обработка была максимально оптимизированной.
Даже если в базе хранить не имя, а путь/имя, то при выводе достаточно было бы basename(field_name). | |
|
|
|
|
|
|
|
для: confirm
(03.12.2014 в 08:18)
| | Можете представить, было у вас что то в прошлом и теперь этого никак не изменишь. Плохо. Но вы поняли ошибку. А сейчас есть шанс немного поправить ситуацию.
Вы выберете зарываться в прошлом и угнетать себя или жить в настоящем и дальше строить будущее? | |
|
|
|
|
|
|
|
для: Sarat
(03.12.2014 в 08:28)
| | Шанс поправить ситуацию, это переписать сию бодягу как подобает - в базе только имя файла (или путь/имя), строку и какие-то там переменные формировать при выводе из базы, что будет гораздо быстрее, чем заниматься чепухой, которой вы собираетесь. Нет в вашем подходе никакого "будущего" - смрад это необдуманный. | |
|
|
|
|
|
|
|
для: confirm
(03.12.2014 в 08:33)
| | Да там таких записей пару сотен наберется, я что, каждую буду вручную переписывать?
Тем более, даже если через запятую писать в одно поле--- 'название фотокарточки', имя_файла_1, имя_файла_2 ---затем функцией разделять эту строку на три переменных.
Экономия сомнительная, строка то в базе не намного короче становиться | |
|
|
|
|
|
|
|
для: Sarat
(03.12.2014 в 08:36)
| | Чегооооо? Писать в базу через запятую писать в одно поле--- 'название фотокарточки', имя_файла_1, имя_файла_2 - это кто вам тут такое советовал?
Значит так - имя файла 1, которое имеет "двойника" в виде "большего брата" достаточно различать префиксом или иным способом. Из этого следует, что в базе должно храниться всего лишь одно имя - "младшего из братьев". Хранить имя с добавлением через строку 'название фотокарточки', это очередная глупость, такая же как и хранить <a><img></a>, а потом карячится. Что проблематично хранить 'название фотокарточки' в отдельном поле?
И вообще, я вам уже как-то говорил - удобно именовать файлы связывая их по ID владельца. В этом случае их имена можно вообще не хранить в базе, а если необходим признак наличия его, то этим признаком может быть 0/1, или ширина/высота изображения (если они нужны).
При удалении записей, совсем не потребуется лезть за именами файлов в базу для их удаления, так как зная ID удаляемых записей, достаточно будет:
<?
if($files = glob('path/{' . $delete . '}_*', GLOB_BRACE)) array_map('unlink', $files);
//где _* - это символ после подчеркивая определяющий большого брата
|
Вы не понимаете пагубности того что у вас наворочено в базе, а судите о "сомнительности экономии". Вы либо вообще не понимаете принципов хранения данных в базе, либо знания у вас пока мизерные.
Пару сотен, это не так много даже переписать руками. Но этого и не обязательно делать - вот для того чтобы не загружать базу чепухой по разбору, чтобы привести к нормальному виду ее, можно сделать таковой разбор единожды, и прямо средствами MySQL. И больше такого кошмара в базе не допускать. | |
|
|
|
|
|
|
|
для: confirm
(03.12.2014 в 09:02)
| | А это не из-за вас с форума все свалили? | |
|
|
|
|
|
|
|
для: Sarat
(03.12.2014 в 10:36)
| | Из-за меня конечно.
Думайте над тем, что делаете, мировые проблемы к вашим данным отношения не имеют. | |
|
|
|
|
|
|
|
для: Sarat
(02.12.2014 в 18:37)
| | Отчасти согласен с оппонентом. Но может кому-то будет интересно, я нашел решение
$photos = "<a class=gallery2 rel=group title='Название фотокарточки' href=gl/2014-12-02_22-59-38.jpg> <img src=gl/mini/2014-12-02_22-59-39.jpg /></a>" ;
$pattern = "|gl\/(.*?)\.jpg|is";
preg_match_all($pattern, $photos, $out);
echo $out[0][0]."<br>". $out[0][1] ."<br>". $out[1][0] ."<br>". $out[1][1];
|
| |
|
|
|