Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδιά!

Λοιπόν, στη μεταβλητή $content έχουμε ένα κείμενο το οποίο διαθέτει bbcode μορφοποίηση (δηλαδή διαθέτει tags όπως , κτλ).

Θέλω να τρέξω έναν κώδικα PHP που να δίνει σε μια άλλη μεταβλητή $imageurl, το url της πρώτης μόνο εικόνας που εντοπίζεται στο $content.

 

Προσοχή στο ότι μιλάμε για bbcode και όχι html..

 

Δοκίμασα τις οδηγίες εδώ, αλλά το script δουλεύει μόνο αν το $content ξεκινάει με μια εικόνα [ img ] blahblah [ / img ] και δηλαδή δεν προηγείται της εικόνας, άλλος κώδικας.

Δημοσ. (επεξεργασμένο)

Ουσιαστικά μπορείς να κάνεις trim τη μεταβλητή $content μέχρι το πρώτο tag εικονας Και μετά να κάνεις trim το υπόλοιπο,

Μια πρόχειρη και πολύ απλή επιλυση:

<?php
$content ="bbcode bbcode bbcode bbcode [ img ] http://i.imgur.com/GB8p8zG.png [ / img ] bbcode bbcode bbcode bbcode";
$imageurl = str_replace(' ', '', $content);
$imageurl= strstr($imageurl, '[img]');
$imageurl = str_replace('[img]', '', $imageurl);
$imageurl = substr($imageurl, 0, strpos($imageurl, "[/"));
echo $imageurl; //http://i.imgur.com/GB8p8zG.png
?>
Επεξ/σία από vacilis
Δημοσ.

Δουλεύει μια χαρά, σε ευχαριστώ! :-)

 

Το μόνο ότι έβαλα και 2η φορά τον κώδικα, ώστε να τσεκάρει και για [ IMG ] (δηλαδή το tag με κεφαλαία). :-)

Δημοσ.

Μπορείς να βάλεις απλώς:

<?php
$content ="bbcode bbcode bbcode bbcode [ img ] http://i.imgur.com/GB8p8zG.png [ / img ] bbcode bbcode bbcode bbcode";
$imageurl = str_replace(' ', '', $content);
$imageurl = strtolower($imageurl); //όλοι οι χαρακτήρες γίνονται πεζοί
$imageurl= strstr($imageurl, '[img]');
$imageurl = str_replace('[img]', '', $imageurl);
$imageurl = substr($imageurl, 0, strpos($imageurl, "[/"));
echo $imageurl; //http://i.imgur.com/GB8p8zG.png
?>
  • Like 1
Δημοσ.

Και κάτι άλλο παιδιά!

Θέλω αυτή τη φορά να πάρω τα url ΟΛΩΝ των εικόνων του $content ([ img ]url[ /img], και να τα βάλω σε έναν php array.

Πως μπορώ να το κάνω;

Έχω κάνει διάφορες δοκιμές με συναρτήσεις τύπου του να πάρεις string μεταξύ δύο άλλων string (του bbcode), αλλά χωρίς επιτυχία.

Δημοσ. (επεξεργασμένο)

απλως λειτουργει...

<?php
$content ="bbcode bbcode bbcode bbcode [ img ] http://i.imgur.com/GB8p8zG.png [ / img ] bbcode bbcode bbcode bbcode  [ img ] http://i.imgur.com/g3dffw.png [ / img ] bbocode bbcode  [ img ] http://www.insomnia.gr/uploads/profile/photo-thumb-272315.png [ / img ] bboce bbcode";
$imageurl = str_replace(' ', '', $content);
$imageurl = strtolower($imageurl); 
$imageurl= strstr($imageurl, '[img]');
$arr = explode("[img]", $imageurl);
foreach ($arr as &$value) {
$value = str_replace('[img]', '', $value);
$value = substr($value, 0, strpos($value, "[/img]"));
}
$imageurls = array();
foreach ($arr as $value1) {
    if (!filter_var($value1, FILTER_VALIDATE_URL) === false) {
        $imageurls[] = $value1;
    }
}
var_dump($imageurls);
?>

Output:

array(3) {
  [0]=>
  string(30) "http://i.imgur.com/gb8p8zg.png"
  [1]=>
  string(29) "http://i.imgur.com/g3dffw.png"
  [2]=>
  string(61) "http://www.insomnia.gr/uploads/profile/photo-thumb-272315.png"
}
Επεξ/σία από vacilis
Δημοσ.

Σε ευχαριστώ! :-)

Τελικά βρήκα μια πιο σύντομη λύση συνδυάζοντας διάφορα που διάβασα στο διαδίκτυο:

 preg_match_all("~\[IMG\](.+?)\[/IMG\]~", $content, $results);
 var_dump($results[1]);
  • Like 1
Δημοσ.

 

Σε ευχαριστώ! :-)

Τελικά βρήκα μια πιο σύντομη λύση συνδυάζοντας διάφορα που διάβασα στο διαδίκτυο:

 preg_match_all("~\[IMG\](.+?)\[/IMG\]~", $content, $results);
 var_dump($results[1]);

Προφανώς πολύ καλύτερη... Δεν σκεφτηκα το preg_match_all

Δημοσ. (επεξεργασμένο)

Κι άλλη απορία που προσπαθώ να λύσω εδώ και ώρα!

 

Λοιπόν, έχουμε τον γνωστό μας bbcode:

[quote]text[/quote]
και

[quote=username;123]text[/quote ]
 

Το text λοιπόν μπορεί να έχει έναν δικό μου bbcode με ονομασία [mybbcode]αριθμοί[/mybbcode]

 

Όλο το κείμενο του post (χαρακτήρες, αριθμοί και κώδικας bbcode) είναι στη μεταβλητή $content.

Τι θέλω να κάνω;

Να εντοπίσω τον αριθμό "123" (ας τον πούμε $postid) που βλέπετε στο παραπάνω quote, δηλαδή τον αριθμό εκείνης της θέσης, του [ quote ] tag στο οποίο έχει εσωκλειστεί ο αντίστοιχος [mybbcode].

 

Μερικά παραδείγματα $content:

 

1. Με $content:

[quote=username;123]
lalalaallala [mybbcode]123456[/mybbcode]
bbbb cccc dddd
[mybbcode]5334[/mybbcode] haha
[/quote ]
Θα ήθελα να πάρω έναν php array με τα εξής στοιχεία:

array(123 => array('123456', '5334'))

 

2. Με $content

[quote=username;123]
lalalaallala [mybbcode]9999[/mybbcode]
bbbb cccc dddd
[quote=user2;111]
hi!
[mybbcode]5334[/mybbcode][mybbcode]8884[/mybbcode]
[/quote] haha
[/quote ]
Θα ήθελα να πάρω έναν php array με τα εξής στοιχεία:

array(

   123 => array('9999'),

   111=> array('5334', '8884')

)

 

κτλ, για οποιαδήποτε βάθος από quotes. Το θέμα είναι να πάρω το περιεχόμενο του mybbcode και να το έχω σε πίνακα με το $postid του quote στο οποίο εσωκλείεται.

 

Όποια βοήθεια ευπρόσδεκτη!

Επεξ/σία από philos
Δημοσ.

Καμιά ιδεά; :-)

 

Αν οι ζητούμενοι arrays όπως τους περιέγραψα έχουν μειονεκτήματα, ας πάρουν άλλη μορφή. Απλά θέλω τα δεδομένα σε έναν php array για να τα χρησιμοποιήσω. :-)

Δημοσ.

Δεν νομίζω να είναι οι arrays το πρόβλημα. Απλά δεν πρόκειται κανείς να κάτσει να σου βγάλει όλον τον αλγόριθμο από το μηδέν.

 

Πες τι έχεις κάνει και που κόλλησες.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...