Gå til innhold

[Løst] fjerne <img> fra string


Anbefalte innlegg

Hei. Adrian her.

Jeg jobber med en nettside. Jeg bruker TinyMCE (advanced) som tillater deg og legge til bilder. Men jeg ønsker ikke og vise disse bildene på forsiden men på en detaljer side. Har satt opp både index.php og detaljer.php. Alt jeg trenger er scriptet som fjerner <img>.

Jeg har prøvd

$post = preg_replace("/<img[^>]+\>/i", "", $row['post']);

Men ser ikke ut som om den vil fjerne fra TinyMCE. Jeg tror det er fordi TimyMCE legger til style.

Noen som kan hjelpe meg?

:)

Lenke til kommentar
Videoannonse
Annonse

Koden skal da fungere, den, selv om du bruker style tags. Er du sikker på at du ikke har blandet $post og $row['post']?

 

Dette vil jo ikke fungere:

$post = preg_replace("/<img[^>]+\>/i", "", $row['post']);
echo $row['post'];

 

Men dette vil:

$post = preg_replace("/<img[^>]+\>/i", "", $row['post']);
echo $post;

 

Eventuelt:

$row['post'] = preg_replace("/<img[^>]+\>/i", "", $row['post']);
echo $row['post'];

 

Hvis det ikke er problemet, har du eksempler på <img>-tags som ikke blir fjernet?

Endret av Mathias-S
  • Liker 1
Lenke til kommentar

Koden skal da fungere, den, selv om du bruker style tags. Er du sikker på at du ikke har blandet $post og $row['post']?

 

Dette vil jo ikke fungere:

$post = preg_replace("/<img[^>]+\>/i", "", $row['post']);
echo $row['post'];

 

Men dette vil:

$post = preg_replace("/<img[^>]+\>/i", "", $row['post']);
echo $post;

 

Eventuelt:

$row['post'] = preg_replace("/<img[^>]+\>/i", "", $row['post']);
echo $row['post'];

 

Hvis det ikke er problemet, har du eksempler på <img>-tags som ikke blir fjernet?

Koden min er:

$post = preg_replace("/<img[^>]+\>/i", "", $row['post']);
   $post = substr($row ['post'],0,500)."...";
   echo "<font color = '#fca00d'><h1>" . $row['title'] . "</h1></font>";
   echo "<div class = 'posts'>" . $post . "</div><p> <a href = 'detaljer.php?id=" . $row['id'] . "'>Les mere/se bilder</a>";
   echo "<div class='date'>" . $row['date'] . "</div><hr color = 'white'/>";

Glemte at dere kansje ville ha den :)

Lenke til kommentar

Såvidt jeg husker er "alt" (og diverse andre attributes <img> kan ha) definert som CDATA, og har egentlig lov til å inneholde >, så i teorien vil ikke den regexpen alltid fungere.

 

I praksis er det veldig sjelden et problem - jeg mener å huske at det er anbefalt ("should", men ikke "must", i RFC-språk) å URL-encode < og >.

 

edit: Aha, jeg har gravd litt i HTML5-standarden.

 

Angående attributter: Attribute values can contain text and character references, with additional restrictions depending on whether they are unquoted attribute values, single-quoted attribute values, or double-quoted attribute values. Also, the HTML elements section of this reference describes further restrictions on the allowed values of particular attributes, and attributes must have values that conform to those restrictions.

 

Angående double-quoted attributes:

A double-quoted attribute value is specified by providing the following parts in exactly the following order:

  • an attribute name
  • zero or more space characters
  • a single "=" character
  • zero or more space characters
  • a single """ character
  • an attribute value
  • a """ character

In addition to the general requirements for attribute values, a double-quoted attribute value has the following restriction:

  • must not contain any literal """ characters

Angående text:

Text in element contents (including in comments) and attribute values must consist of Unicode characters, with the following restrictions:

  • must not contain U+0000 characters
  • must not contain permanently undefined Unicode characters
  • must not contain control characters other than space characters

character data contains text, in some cases in combination with character references, along with certain additional restrictions. There are three types of character data that can occur in documents:

  • normal character data
  • replaceable character data
  • non-replaceable character data

Normal character data:

Certain elements contain normal character data. Normal character data can contain the following:

  • text
  • character references

Normal character data has the following restrictions:

  • must not contain any "<" characters

(Replaceable er title og textedit - taggene, mens non-replacable er style og script-taggene.)

 

Såvidt jeg kan forstå betyr alt dette at attributter (alt, longdesc, title osv) kan inneholde >, men ikke <. Noe som er moderat grusomt. :D

Endret av Djn
Lenke til kommentar
  • 3 uker senere...

Hei, har du vurdert å bruke strip_tags()?

Som regel er det ytterst få tags du ønsker at man skal få lov å legge inn og parse ut.

Dette bør også gjøres på "inn" siden.

Du definerer med strip_tags() hvilke tag som er lov.

 

$post = strip_tags($row['post'], '<p><a><b><strong><em><i><ul><br>');

Lenke til kommentar

Nei. Jeg har ikke vurdert og bruke strip tags. Jeg har en del styling i denne så det er ikke noe vits. Og det er bare administratorer som får legge inn ting på siden så jeg går for at de ikke driver med for mye tull :)

Hei, har du vurdert å bruke strip_tags()?

Som regel er det ytterst få tags du ønsker at man skal få lov å legge inn og parse ut.

Dette bør også gjøres på "inn" siden.

Du definerer med strip_tags() hvilke tag som er lov.

 

$post = strip_tags($row['post'], '<p><a><b><strong><em><i><ul><br>');

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...