Διαγραφή κομμάτι του κειμένου

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
stathis_k9
Δημοσιεύσεις: 58
Εγγραφή: 03 Ιαν 2011 18:56
Τοποθεσία: Πειραιάς
Επικοινωνία:

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από stathis_k9 » 17 Σεπ 2013 00:36

Γεια σας,

είναι δυνατόν να διαγραφεί ένα κομμάτι του κειμένου που είναι ίδιο σε όλα τα άρθρα;

Συγκεκριμένα, εισήγαγα ένα xml feed και μέσα στο post_content έχει img με source της πηγής:

<p><img alt="Χειροποίητο κολιέ" src="http:// πηγή . gr/uploads/products_0_image_61.jpg" /></p>


Υπάρχει εντολή που να το διαγράφει από όλα τα άρθρα;

Ευχαριστώ

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από Khronos » 17 Σεπ 2013 09:22

Κάπως έτσι:

Κώδικας: Επιλογή όλων

UPDATE your_table SET your_field = REPLACE&#40;your_field, 'src="http&#58;// πηγή . gr/', 'your_value'&#41;
Πάρε backup πρώτα!

edit. Τώρα κατάλαβα οτι θες να το σβήσεις τελείως, οπότε μάλλον δεν σου κάνει...

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από alou » 17 Σεπ 2013 10:04

Το πιο εύκολο που μπορείς να κάνεις είναι sql dump τον πίνακα και search / replace με κενό το συγκεκριμένο κομμάτι σε ένα txt editor.

Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από nirvana » 17 Σεπ 2013 15:33

Opws eipe o Khronos:

Κώδικας: Επιλογή όλων

UPDATE your_table SET your_field = REPLACE&#40;your_field, '<p><img alt="Χειροποίητο κολιέ" src="http&#58;// πηγή . gr/uploads/products_0_image_61.jpg" /></p>', ''&#41; 
Kai prin kane ena test se enan test table na sigourefteis oti doulevei opws prepei.

stathis_k9
Δημοσιεύσεις: 58
Εγγραφή: 03 Ιαν 2011 18:56
Τοποθεσία: Πειραιάς
Επικοινωνία:

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από stathis_k9 » 18 Σεπ 2013 02:53

Ευχαριστώ για τις λύσεις που μου δίνετε,

να διευκρινήσω ότι το πεδίο <p><img alt="Χειροποίητο κολιέ" src="http:// πηγή . gr/uploads/products_0_image_61.jpg" /></p> είναι διαφορετικό σε κάθε post,

έρχεται πρώτο στο κείμενο και ακολουθεί μιά περιγραφή,

δηλαδή το alt και το src αλλάζουν,

πριν θέσω το ερώτημα στο forum δοκίμασα την εντολή DELETE

DELETE
FROM `wp_posts`
WHERE `post_content`
LIKE '%img%'

και διάφορες παραλλαγές που τελικά έσβηναν όλο το κείμενο.

stathis_k9
Δημοσιεύσεις: 58
Εγγραφή: 03 Ιαν 2011 18:56
Τοποθεσία: Πειραιάς
Επικοινωνία:

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από stathis_k9 » 18 Σεπ 2013 02:55

Το πιο εύκολο που μπορείς να κάνεις είναι sql dump τον πίνακα και search / replace με κενό το συγκεκριμένο κομμάτι σε ένα txt editor.

Δεν έχω ιδέα πως γίνεται, το ψάχνω στο Google...

Ευχαριστώ

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από alou » 18 Σεπ 2013 09:25

Είχες πει ότι είναι ίδιο σε όλα τα άρθρα στην αρχή...

Θα πας στο phpmyadmin, θα επιλέξεις τον πίνακα που θες και θα πατήσεις εξαγωγή / export σε μορφή sql.

Αυτό το αρχείο, θα το ανοίξεις με έναν text editor που να δέχεται regular expressions (επειδή δεν είναι ίδιο αυτό που θες να σβήσεις, πρέπει να "ματσάρεις" κομμάτια του) στις αναζητήσεις, όπως ο Notepad++ / TextWrangler ανάλογα με το λειτουργικό σου.

Πρέπει όμως να βρεις κάποια κομμάτια στην αρχή και το τέλους του κειμένου που θες να αφαιρεθεί, που να επαναλαμβάνονται σε όλα όσα θες να σβηστούν και να μην υπάρχουν σε αυτά που ΔΕΝ θες να σβηστούν. Αν καταλήξεις σε αυτό, ξαναζητάς βοήθεια για το regular expression.
Αν δε γίνεται, τα σβήνεις ένα ένα.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από dva_dev » 18 Σεπ 2013 11:30

Θα πρέπει να πας με κώδικα (είτε mysql είτε php) δεν μπορεί να γίνει με απλά sql statements και για regular expression δεν νομίζω υποστηρίζει η mysql για replace.

Για mysql θα μπορούσες να κάνεις μια δοκιμή με substr και να ψάχνεις ότι βρίσκεται ανάμεσα σε δύο substrings και να το αφαιρείς.
Π.χ. να φτιάξεις μια udf του στύλ:

Κώδικας: Επιλογή όλων

DELIMITER $$
DROP FUNCTION IF EXISTS `ExtSubstr` $$
CREATE FUNCTION `ExtSubstr` &#40;str TEXT, s1 VARCHAR&#40;64&#41;, s2 VARCHAR&#40;64&#41;&#41; RETURNS TEXT
BEGIN
DECLARE p1 LONG;
DECLARE p2 LONG;
DECLARE ret TEXT;
  IF str IS NULL THEN
    RETURN NULL;
  END IF;
  SET ret = '';
  SET p1 = INSTR&#40;str, s1&#41;;
  WHILE &#40;p1 > 0&#41; DO
    SET ret = CONCAT&#40;ret, LEFT&#40;str, p1-1&#41;&#41;;
    SET str = SUBSTR&#40;str, p1+LENGTH&#40;s1&#41;&#41;;
    SET p2 = INSTR&#40;str, s2&#41;;
    IF &#40;p2 > 0&#41; THEN
      SET str = TRIM&#40;LEADING s2 FROM SUBSTR&#40;str, p2&#41;&#41;;
    ELSE
      SET ret = CONCAT&#40;ret, str&#41;;
      SET str = '';
    END IF;
    SET p1 = INSTR&#40;str, s1&#41;;
  END WHILE;
  SET ret = CONCAT&#40;ret, str&#41;;
  RETURN ret;
END $$
DELIMITER ;
και να την καλέσεις σαν

Κώδικας: Επιλογή όλων

-- SELECT ExtSubstr&#40;κείμενο, από, εώς&#41;;
-- αφαίρεί από το κείμενο ότι βρίσκεται ανάμεσα στα από - εώς

SELECT ExtSubstr&#40;'BEFORE&#40;<p><img alt="Χειροποίητο κολιέ" src="http&#58;// πηγή . gr/uploads/products_0_image_61.jpg" /></p>&#41;AFTER', '<p><img alt=', '/></p>'&#41;;
που για το κείμενο

Κώδικας: Επιλογή όλων

BEFORE&#40;<p><img alt="Χειροποίητο κολιέ" src="http&#58;// πηγή . gr/uploads/products_0_image_61.jpg" /></p>&#41;AFTER
επιστρέφει

Κώδικας: Επιλογή όλων

BEFORE&#40;&#41;AFTER
Κάνε backup και δοκιμές πρώτα και αν νομίζεις ότι είναι εντάξει το γυρνάς σε update, του στύλ

Κώδικας: Επιλογή όλων

update pinakas set pedio = ExtSubstr&#40; pedio, '<p><img alt=', '/></p>'&#41;;

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

Διαγραφή κομμάτι του κειμένου

Δημοσίευση από charavge » 19 Σεπ 2013 01:13

stathis_k9 έγραψε:
Το πιο εύκολο που μπορείς να κάνεις είναι sql dump τον πίνακα και search / replace με κενό το συγκεκριμένο κομμάτι σε ένα txt editor.

Δεν έχω ιδέα πως γίνεται, το ψάχνω στο Google...

Ευχαριστώ
Απλώς κάνεις "Εύρεση του" και "Αντικατάσταση με" π.χ. στο Word. Αν έχεις και το Notepad++ κάνεις το ίδιο πράγμα.

Είναι πολύ απλό: λες στο πρόγραμμα "Βρες μου τη φράση: <img src=....." και "Αντικατέστησέ την με:.....". Αν αφήσεις κενό το 2ο απλώς διαγράφει ό,τι έχεις βάλει στην εύρεση...

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες