Hallo,
ich hoffe der Tread ist noch nicht Tod denn den finde ich richtig spitze und als Neuling habe ich gleich eine mächtige Frage!
Also mit PHP etc. kenne ich mich ganz gut aus aber leider sind RegEx meine Schwachstellen

.
Also, folgende Probleme:
wenn ich über eine Suchabfrage die String teile anders darstellen will,
z.B. in "<h4>", die betroffen sind, werden alle betroffen Zeichen in z.B. "<h4>
pdf</h4>" dargestellt.
Realisiert habe ich das so:
PHP-Code:
<?php
$str_von_suchabfrage = "pdf"; //z.B.
$str = "bla bla bla pdf bla"; //string der Gepharst werden soll
$str = preg_replace('#('.preg_quote($str_von_suchabfrage).')#i','<h4>\\1</h4>',$str);
?>
Ergebnis(html code):
bla bla bla <h4>
pdf</h4> bla
Soweit alles Okay

.
Aber,
wenn mein Suchwort z.B. "pdf" lautet und in meiner Stringkette z.B. eine URL/Link kommt, dann wird es MIST

!
Beispiel:
PHP-Code:
<?php
$str_von_suchabfrage = "pdf"; //z.B
$str = "bla bla bla pdf bla <a href=\"upload/formular_pdf.pdf\">formular_pdf</a> bla bla bla bla"; //string der Gepharst werden soll
$str = preg_replace('#('.preg_quote($str_von_suchabfrage).')#i','<h4>\\1</h4>',$str);
?>
Ergebnis(html code):
bla bla bla <h4>
pdf</h4> bla
<a href="upload/formular_<h4>pdf</h4>.<h4>pdf</h4>">formular_<h4>pdf</h4></a> bla bla bla bla
Natürlich führt dieser Link ins "Nirwana"!
Frage:
Wie kann mann
<h4> und
</h4> nach <a href"upload/..."> wieder rausfiltern aber nicht in der
Linkbezeichung?
Das Ergebnis sollte ungefähr so aussehen:
bla bla bla <h4>
pdf</h4> bla
<a href="upload/formular_pdf.pdf">formular_<h4>pdf</h4></a> bla bla bla bla
So ich hoffe mein Problem ist so einiger massen gut beschrieben und ihr könnt damit was anfangen. Es währe super wenn mir in diesem Fall jemand helfen könnte denn ich weiß echt nicht wo ich da anfangen soll

!
Nachtrag:
So, ich habe mir mal einige Gedanken dazu gemacht und evtl. einen Ansatz gefunden.
PHP-Code:
<?php
$str_von_suchabfrage = "pdf"; //z.B
$str = "bla bla bla pdf bla <a href="upload/test-formular.pdf">bez_PDF_formular</a> bla bla bla bla"; //string der Gepharst werden soll
$str1 = preg_replace('#('.preg_quote($str_von_suchabfrage).')#i','<h4>\\1</h4>',$str);
$str2 = preg_replace("#<a href=\"(.+?)\/(.+?)\.(.*)<h4>(.+?)<\/h4>(.*)\">(.+?)<\/a>#i", "<a href=\"\\1/\\2.\\3\\4\\5\">\\6</a>", $str1);
echo $str2;
?>
Also dieses Pattern
erkennt denn String!
Ergebniss(html code
):
bla bla bla <h4>pdf</h4> bla <a href="upload/test-formular.pdf">bez_<h4>PDF</h4>_formular</a> bla bla bla bla
so wie es sein sollte... <h4>und</h4> wird nur noch in der Linkbezeichnung zugellassen aber nicht in der relativen URL
Problem:
momentan funktioniert das nur wenn der aufbau der URL so aussieht:
<a href="upload/test-formular.pdf">bez_PDF_formular</a>
aber nicht wenn so:
<a href="upload/test-pdf-formular.pdf">bez_PDF_formular</a>oder
<a href="upload/pdf.pdf">bez_PDF_formular</a>
Hat jemand eine Idee?