Hallo HeartTen,
versuch mal das hier
PHP-Code:<?php
$str = "blabla[b123]b666]bu[987kk]tg";
preg_match_all( "/\[(.*)]/siU", $str, $treffer );
echo "<pre>" .print_r( $treffer, true). "</pre>";
?>
jeder reguläre Ausdruck braucht einen Start- und Endtag
/.../
man kann auch andere "Delimiter" benutzen, schaus Dir einfach mal an:
http://regexp-evaluator.de/tutorial/
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Hallo HeartTen,
versuch mal das hier
PHP-Code:<?php
$str = "blabla[b123]b666]bu[987kk]tg";
preg_match_all( "/\[(.*)]/siU", $str, $treffer );
echo "<pre>" .print_r( $treffer, true). "</pre>";
?>
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
mag sein, in javascript, php und perl braucht man sie, in java kenn ich mich nicht aus
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
So, mit folgenden Regulären Ausdruck funktioniert es:
Code:\[[^\]]*\]
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:
Ergebnis(html code):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);
?>
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:
Ergebnis(html code):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);
?>
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.
Also dieses Pattern erkennt denn String!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;
?>
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?
Geändert von jenny82 (05.02.2008 um 12:28 Uhr)
Hallo,
hab hier ein kleines Problem.
Woher weis die regex, auf welche Zeichen sich das "$" bezieht (Zeichenende).
Z.B. /hafen$/
Das heist die Zeichen "hafen" dürfen nur am Ende der Zeichenkette vorkommen.
Also wird gemacht "Friedrichshafen" aber nicht "hafexxxxxn".
Warum bezieht sich das "$" auf alle Zeichen, und nicht nur auf das Zeichen das direkt davor steht????
Weiteres Bsp.:
\^[hH]alle$\
Das heist: Das Wort muss mit "h" oder "H" anfangen und mit "alle" enden.
Die gleiche Frage: Warum bezieht sich das "^" nur auf die "[hH]" und das "$" auf die "alle"?
Kann mir das mal jemand erklären.
hi @ all!
Ich sitze schon seit tagen an einem kleinen problem. sollte eigentlich so schwer sein aber ich suche ein regular expression für ein passwort string, dass:
- mindestens 7 Zeichen lang sein sollte und
- mindestens 1 Sonderzeichen haben soll
ich kriegs aber einfach nich hin.
vielen dank
mfg
christian
Ich schlage vor, du machst einfach zwei Ausdrücke.
^.......+$ (mindestens 7 Zeichen)
und
[,#+] (Klasse deiner Sonderzeichen)
danke dir. so war dann auch mein plan![]()
Hi... Ich habe ein Regexproblem...
Ich möchte in einem string eine Nach einem Zeichen suchen, aber erst die nachfolgende zeichenkette ausgeben lassen... also die zu suchenden zeichen nicht mit ausgeben...
z.B. Lorem ipsum dolor sit {test} amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna {testest} aliquyam erat, sed diam voluptua. At vero eos et {nochmehrtest} accusam et justo duo.
und da die wörter in geschweiften klammern heraufiltern, ohne die geschweiften klammern...
Danke für eure antworten
/(test)+/
Ich habe allerdings dein Anliegen nicht gänzlich verstanden.
Hmmm... mit deinem Muster würde ich aber auch jedes andere "test" im string finden... mir geht es darum ausschließlich die Wörter in den geschweiften Klammer herauszufiltern, ohne dabei die gescheiften klammer mit einzubeziehen... Nur den text innerhalt der geschweiften klammern....
Klingt komisch, ist es auch... Aber daran knobel ich schon ne zeit...
http://regexp-evaluator.de/evaluator...09c6/#ergebnis
Bin immer noch nicht schlauer. Gibts die geschweiften Klammern überhaupt oder hast du diese jetzt nur zum Hervorheben verwendet?
Ein exaktes, realistisches Beispiel wäre hilfreich. Der String der zu durchsuchen ist, sowie das erwartete Ergebnis. Ebenfalls hilfreich wäre zu wissen, wie die Suchwörter vorliegen. Kommen die aus einer DB und variieren? Stehen die in einer Datei/Array und sind statisch? Wie soll der Fund weiterverarbeitet werden? Wird der String "bereinigt" noch benötigt (alsi dienen die {blabla} als Platzhalter, wie etwa in einem Template) oder kommt es nur auf die gefundenen Wörter an? Fragen über Fragen.
Wenn nur die Wörter gefunden werden müssen, der rest vom String egal ist, braucht man eventuell gar kein RegEx, sondern ein zerteilen des Strings an der öffnenden Klammer und ein abschneiden der schließenden Klammer würde schon reichen. Ebenfalls denkbar wäre ein preg_split zum zuerlegen. Welcher Weg aber der einfachste/performanteste ist hängt aber eben von den Antworten der oben gestellten Fragen ab.
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)