Matchings
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
beispiel
beschreiben
code
gefundenen ausdruck
gel
gesuch
leute
machen
mist
mitdenken
operator
problem
rechen
steig
teil
terror
text
treffer
versuch
-
Leute ich kriegs einfach net hin: folgendes problem:
Ich m?chte, dass ein Text ?berpr?ft wird. alle [.quote] und [./quote] sollen ersetzt werden, aber nur wenn beides auch wirklich da ist!
H?rt sich simple an(is es mit PERL auch) aber ich steig bei PHP einfach nich hinter preg-match_all und den ganzen mist.
ich hoffe ihr k?nnt mir weiterhelfen! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sorry aber ich fidne das sichd as nicht simple anh?rt. Im gegenteil ich kappiere ?berhaupt net was du haben m?chtest
-
das liegt daran, das ich vergessen habe, das [.quote] ?uch bei lima ersetzt wird! sry daf?r. also nochmal: ich will das in einem text alle [.quote] und [./quote] ersetzt werden, aber nur wenn auch beides vorliegt.
ich hoffe jetzt ist es verst?ndlicher -
terror-state schrieb:
H?rt sich simple an(is es mit PERL auch) aber ich steig bei PHP einfach nich hinter preg-match_all und den ganzen mist.
ich hoffe ihr k?nnt mir weiterhelfen!
Wie w?hre das denn in PERL?
Und du meinst doch preg_match_all und nicht preg-match_all.
Wenn du wei?t wie man das macht kannst du es mir mal schicken.
Ich hatte mal ein ?hnliches Problem. Und das habe ich jetzt erstmal beiseite gelegt da es nicht so wichtig ist.
P.S. Mein Priobelme war das ich sowas wie [irgendwas='text1'] text2 [/irgendwas] finden wollte und dann direkt text1 und text2 in zwei Variablen haben wollte.
Dachte auch das das einfach sei. Aber nachdem ich mich damit rumgeschlagen haben, habe ich es gelassen.
Jens -
geht das hier vielleicht:
while(strpos($text,"",$quote_end_pos)){
$quote_pos=strpos($text,"",$quote_end_pos);
",$quote_pos);
$quote_end_pos=strpos($text,"
$text_davor=substr($text,0,$quote_pos);
$quote_pos=$quote_pos+7;
$quotelen=$quote_end_pos-$quote_pos;
$quote=substr($text,$quote_pos,$quotelen);
$text_danach_lenght=strlen($text)-$quote_end_pos;
$quote_end_pos=$quote_end_pos+8;
$text_danach=substr($text,$quote_end_pos,$text_danach_lenght);
//jetzt kannst du mit $text_davor , $quote und $text_danach n bisschen rumbasteln.
}
versuchs mal
EDIT: Bei mir gehts jetzt -
is ne sch?ne idee, aber trifft leider nicht den punkt. ich versuchs ein drittes mal
$text = "[bla]Hallo mein name ist terror-state[/bla][bla]das nich mehr";
ich habs einfach mal [bla] genannt ^^ also:
das erste [bla] soll meinetwegen mit <.u> ersetzt werden... und das erste [/bla] wird dann mit <./u> ersetzt. dann folgt ein offenes [bla], was dann jedoch herausgefiltert werden soll. alle geschlossenen [bla]-[/bla]-tags sollen erstetzt werden, die ungeschlossenen werden herausgefiltert.
also noch genau kann ichs nich beschreiben. ^^ sry. aber ihr macht das schon.
ich will nur verhindern, dass offene [bla]-tags meine seite kaputt machen! es ist mir allerdings auch zu bl?d, einfach ?berall einfach ein [/bla] ranzuh?ngen. ich k?nnte auch z?hlen, wie viele [bla] und wieviel [/bla]-tags vorkommen und dann entscheiden ob hinten was ranmuss oder nicht, aber ich will das eleganter l?sen.
Danke f?r euer mitdenken -
Habe nochmal gesuch und was gefunden.
Ich denke das wird dir auch weiterhelfen.
<?
// Das \\2 ist ein Beispiel f?r R?ckreferenzierung. Es teilt pcre mit, dass
// der regul?re Ausdruck mit dem f?r das zweite Klammerpaar, also in diesem
// Fall mit dem f?r ([\w]+) gefundenen Ausdruck selbst ?bereinstimmen muss.
// Der zus?tzliche Backslash wird wegen der doppelten Anf?hrungsstriche
// ben?tigt.
$html = "<b>fett gedruckter Text</b><a href=howdy.html>klick mich an</a>";
preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $treffer);
for ($i=0; $i< count($treffer[0]); $i++) {
echo "gefunden: " . $treffer[0][$i] . "\n";
echo "Teil 1: " . $treffer[1][$i] . "\n";
echo "Teil 2: " . $treffer[3][$i] . "\n";
echo "Teil 3: " . $treffer[4][$i] . "\n\n";
}
?>
Dieses Beispiel erzeugt:
gefunden: <b>fett gedruckter Text</b>
Teil 1: <b>
Teil 2: fett gedruckter Text
Teil 3: </b>
gefunden: <a href=howdy.html>klick mich an</a>
Teil 1: <a href=howdy.html>
Teil 2: klick mich an
Teil 3: </a>
Wie du das auf deine W?nsche ?ndern kannst wirst du wohl wissen. :-))
P.S. Gefunden auf: http://de3.php.net/manual/de/function.preg-match-all.php
Jens -
ja das hab ich auch schon gesehn... aber ich find denn code zu rechen aufwendig! jedenfalls bin ich mittlerweile fast fertig (sowohl geistig, als auch mit dem code). mir fehlt noch ein befehl, der nur den ersten treffer ersetzt. dann m?sste es gehn. allerdings funzt der /o operator nich so wirklich.
kann mir da einer weiterhelfen? also nur der erste treffer soll ersetzt werden. -
Ha leute ich habs raus!
hier mal der code, denn ich denke der is ganz n?tzlich. nat?rlich noch bearbeitungsw?rdig (matchings sind echt nich meine welt ^^)
$row[5] = "[u]Underline1[/u] [u]Underline2[u]Hallo mein Name ist Terror-State"; while (eregi("((\[u\])(.*)(\[\/u\]))",$row[5])) { $row[5] = preg_replace ("/\[\/u\]/i","</u> ", $row[5], 1); $row[5] = preg_replace ("/\[u\]/i","<u> ", $row[5], 1); } $row[5] = preg_replace ("/\[\/u\]/i"," ", $row[5]); $row[5] = preg_replace ("/\[u\]/i"," ", $row[5]);
alle geschlossenen tags werden ersetzt und was ?brig bleibt wird entfernt!
viel spass damit.
kann eigentlich geschlossen werden, weil problem ja gel?st wurde! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage