Filter für <a ..... ></a>

frankys9

Mitglied
Hallo Leute,

ich möcht mir gern String nach x Zeichen abschneiden und "..." anhängen.
Das ist auch nicht die Schwirigkeit.

PHP:
if (strlen($myString) >= 10)
        {
        echo substr($myString,0,10)."...<br>";
        }
Wenn in myString der Tag <a> </a> enthalten ist soll dieser mit allen was darin enthalten ist ignoriert werden.
Da ich von PHP noch nicht so viel Ahnung stehe ich auf dem Schlauch.

Ist es überhaupt möglich so eine Art Filter zu schreiben und wenn ja könnt ihr mir vielleicht einen Lösungsansatz geben

Danke
 
Hallo noch mal,

also ich habe jetzt das komplette Tutorial durchgearbeitet und muss sagen, dass das Tutorial an sich super ist aber mir bei meinem Problem nicht wirklich weiter helfen kann.

Die "Lösung" mit preg_replace ist nicht das was ich erreichen möchte...

PHP:
<?php

    $myString = "<a href='index.php'>Link</a> Hier steht der restliche Text, der gekürzt werden soll.";
    if (strlen($myString) >= 30)
        {
        echo substr(preg_replace("!<a(.*?)>|</a>!","",$myString),0,30)."...<br />";
        }
?>

Durch preg_replace wird (wie der Name auch schon vermuten lässt) ein bestimmter Bereich aus dem String geschnitten und bei Bedarf ersetzt.

Ich möcht eigentlich nur erreichen, dass bei substr alle Zeichen ausser zwischen <a und > und zwischen </a> gezählt und dementsprechend abgeschnitten werden.

Beispiel:
<a href='index.php'>Link</a> Hier steht der restliche Text, der gekürzt werden soll.

Es sollen alle Zeichen ausser <a href='index.php'> und </a> gezählt und anschliessend entsprechend gekürzt werden.

Hat jemand eine Idee?
 
Zuletzt bearbeitet:
So kannst du die länge der <a>-Tags "berechnen":

PHP:
$myString = "<a href='index.php'>Link</a> Hier steht der<a href='lol.php'></a> restliche Text, der gekürzt werden soll.";

preg_match_all('/\<a .*\>|\<\/a\>/siU', $myString, $match, PREG_SET_ORDER);

$aLenght = 0;
foreach($match as $var){
  $aLenght += strlen($var[0]);
}

echo $aLenght;

$aLenght ziehst du dann einfach von der Länge des gesamten Strings ab und hast somit die Länge aller Zeichen ohne die <a>-Tags.
 
Hallo mAu,

vielen Dank für deine Hilfe!! Das Script funktioniert super!

Danke auch an alle anderen die geholfen haben!
 
Zurück