span löschen und was anderes erstellen

JesusFreak777

Erfahrenes Mitglied
Hallo ihr,

ich habe einen Test der ca. so aussieht!

PHP:
$text = "Das ist ein <span id='123' class='klasse' text='beschreibung zu diesen textteil'>1</span> bestimmter text!";

Jetzt möchte ich das span rauslöschen und abändern bzw. was hinzufügen!

Der fertige Text soll dann so aussehen!

PHP:
$text = "Das ist ein <SUP><span id='".$z."' class='andereklasse' text='beschreibung zu diesen textteil'>1</span></SUP> bestimmter text!";

mithilfe vom Internetz hab ich schonmal das span gelöscht! Aber so richtig hilft das mir auch nicht weiter!
PHP:
preg_replace('#<(/*)span[^>]*>#msi', '?', $str);

So kann ich zwar auch was davor und dahinter einfügen, aber das gleiche bringt mich nicht ganz zum Ergebnis!


Danke jetzt schon für eure Hilfe

-> was ich auch auch interessatn fände, wie lösche ich ein attribut? z.B. die ID****?
 
Zuletzt bearbeitet:
item: Die ID löschen? Du willst ja eh den ganezn span-Tag ersetzen. Dann lass die ID einfach weg

item: In deinem Beispiel änderst du nur die ID und die class. Willst du jetzt den ganzen span-Tag ersetzn oder nur diese 2 Argumente?

Annahme: Du willst nur die class und die id ersetzen
PHP:
$pattern = '/(<span id=)'[[:digit:]]+'( class=)'[[:alnum:]]+'( [^>]+>)/isU';
$replace = "\1'{$z}'\2'alpha'";
$result = preg_replace($pattern, $replace, $subject);
 
Hallo,

ich versteh das mit den [] nicht ganz...

syntax error, unexpected '['

-> da muss ich bestimmt was ersetzen/ergänzen!?

Ich hab noch nen 2. Problemfall wo es ähnlich aufgebaut ist (deshalb kein neues Thema), nur dort müssen einzelne Attribute gelöscht werden!

Dort steht dann im span noch ein name und eine id die mich stören! Wie kann ich diese Löschen!

In diesen Fall muss jetzt erstmal nur die ID und die class geändert werden!

Vielen Dank!
 
Sorry, mein Fehler (C&P ist schuld). In einem String der mit ' begrenzt ist, müssten ' im String escapt werden oder der String in " fassen.
PHP:
$pattern = "/(<span id=)'[[:digit:]]+'( class=)'[[:alnum:]]+'( [^>]+>)/isU";

[] Ist ein Klammer um zu sagen es sind alle in der Klammer aufgeführten Zeichen gültig.
[1-3] heisst, es ist 1,2 und 3 gültig
[:digit:] entspricht 0-9
[:alnum:] entspricht a-zA-Z0-9
 
Hallo,

ich versteh das mit den [] nicht ganz...

syntax error, unexpected '['

-> da muss ich bestimmt was ersetzen/ergänzen!?

Ich hab noch nen 2. Problemfall wo es ähnlich aufgebaut ist (deshalb kein neues Thema), nur dort müssen einzelne Attribute gelöscht werden!

Dort steht dann im span noch ein name und eine id die mich stören! Wie kann ich diese Löschen!

In diesen Fall muss jetzt erstmal nur die ID und die class geändert werden!

Vielen Dank!
Änder mal:
PHP:
$pattern = '/(<span id=)'[[:digit:]]+'( class=)'[[:alnum:]]+'( [^>]+>)/isU';
in:
PHP:
$pattern = "/(<span id=)'[[:digit:]]+'( class=)'[[:alnum:]]+'( [^>]+>)/isU";
 
Hallo,

tut mir leid, ich stell mich etwas dumm an :/ ...

hier mal mein Quählcode:
PHP:
$str = 'Irgendein geheimer text <span text="mit einem verweis" class="footnote" id="b26ref40001008footnote3">3</span>. und noch mehr text<span text="und noch nen verweis" class="footnote" id="b26ref40001008footnote4">4</span> noch a bissle!';
echo $str;
echo "<br/>";

echo htmlentities($str);
echo "<br/>";
echo "--------------------------------";
echo "<br/>";

$z = 123;
$pattern = "/(<span id=)'[[:alnum:]]+'( class=)'[[:alnum:]]+'( [^>]+>)/isU"; 
$replace = "\1'{$z}'\2'alpha'";
$result = preg_replace($pattern, $replace, $str);  



echo htmlentities($result);

es kann vorkommen das es im span zu verschiebungen kommt (habe ich leider erst jetzt festgestellt -> also das erst ID dann TEXT kommt, wann anders erst TEXT dann ID...)

-> Momentan entspricht mein Ergebniss noch dem Ausgangszustand.... Warum?
 
hat keiner ne idee für mich?

Habe gesehen das es für Javascript ne lösung gibt!

http://de.selfhtml.org/javascript/objekte/all.htm#remove_attribute

Das ist aber Clientseitig und ich brauch das Serverseitig!

Die class kann ich mit nen normalen replace ersetzten, die ist immer gleich! Aber die ID ist unterschiedlich lang (einfach undefiniert) -> am liebsten wäre es mir diese zu entfernen da ich keinen verwendungszweck habe!
Die ID könntest Du so rausfiltern:
PHP:
$data = preg_replace( '#<span(.*?) id=(["|\']{1})(.*?)\\2(.*?)>#msi', '<span\\1\\4>', $data );

Gruß

EDIT//
So ist es evtl. sogar noch etwas genauer:
PHP:
$data = preg_replace( '#<span(.*?)([ ]+id=(["|\']{1})(.*?)\\3)(.*?)>#msi', '<span\\1\\5>', $data );
 
Zuletzt bearbeitet:
Zurück