Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

preg_replace za [code] tag

[es] :: PHP :: preg_replace za [code] tag

[ Pregleda: 3657 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.krusevac-2.tehnicom.net



+1 Profil

icon preg_replace za [code] tag14.08.2002. u 06:09 - pre 264 meseci
Ne mogu da se pohvalim da sam u potpunosti ovladao regularnim izrazima, ali mi je ovo stvarno hitno... Naime, imam:

Code:

$msg1 = preg_replace("/\[code\](.*)\[\/code\]/i", "<table border=0 align=center width=90% cellpadding=3 cellspacing=1><tr><td class='code'><b>Code:</b><br><font color='green'>\\1</font><br></td></tr></table>", $msg1);


Problem je sto ovaj code lepo radi ako bih sve napisao i jednom redu, ali ako pritisnem enter vise puta i zavrsim code tag, onda ga uopste ne renderuje lepo vec samo prikaze ovaj gornji code na stranici.

Isti mi je slucaj i kod quote tagova:

Code:

$msg1 = preg_replace("/\[quote\](.*)\[\/quote\]/i", "<blockquote><font size=1>quote:</font><hr>\\1<hr></blockquote>", $msg1);


Znaci ako napisem u jednom redu onda je ok, ali ako pritiskam enter onda ne renderuje uopste :(

Hvala na pomoci,
Zoran
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: preg_replace za [code] tag14.08.2002. u 13:06 - pre 264 meseci
Dodaj 'm' pattern modifier, dakle:
$msg1 = preg_replace("/\[code\](.*)\[\/code\]/im"...

 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: preg_replace za [code] tag14.08.2002. u 14:18 - pre 264 meseci
Da dodam samo...
m identifier oznacava multiline.

http://www.php.net/manual/en/pcre.pattern.modifiers.php

m (PCRE_MULTILINE)
By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines). The "start of line" metacharacter (^) matches only at the start of the string, while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless D modifier is set). This is the same as Perl.

When this modifier is set, the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m modifier. If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting this modifier has no effect.


Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.krusevac-2.tehnicom.net



+1 Profil

icon Re: preg_replace za [code] tag14.08.2002. u 19:02 - pre 264 meseci
Dodao sam ovaj m modifier ali je ista prica i dalje :(, znaci ne prikazuje kako treba:

Code:

$name=stripslashes($myrow[1]);
$name=htmlspecialchars($name);
$msg1=$myrow[2];
$msg1=htmlspecialchars($msg1);
$msg1=stripslashes($msg1);
$msg1=nl2br($msg1);

$msg1 = preg_replace("/\[quote\](.*)\[\/quote\]/im", "<blockquote><font size=1>quote:</font><hr>\\1<hr></blockquote>", $msg1);

$msg1 = preg_replace("/\[code\](.*)\[\/code\]/im", "<table border=0 align=center width=90% cellpadding=3 cellspacing=1><tr><td class='code'><b>Code:</b><br><font color='green'>\\1</font><br></td></tr></table>", $msg1);

echo "<B>$name</B><p>$msg1";
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.rcub.bg.ac.yu

Sajt: localhost


+5 Profil

icon Re: preg_replace za [code] tag15.08.2002. u 03:29 - pre 264 meseci
probaj 's' patern modifier umesto 'm'... to meni uvek zavrsi posao...

a cisto da se ne bi vratio opet ovde, dodaj i 'U' modifier, koji oznacava "ungreedy", sto u prevodu znaci da ako imash na dva mesta po par [code] tagova, sa 'U' modifierom nece da uhvati pocetak prvog i kraj zadnjeg, nego ce da ih odradi odredjeno...

znaci, moja licna preporuka je 'isU' pattern modifier string... ovo ja uglavnom koristim...

a josh vise preporucujem da malo i RTFM o pattern modifierima...

http://www.php.net/manual/en/pcre.pattern.modifiers.php

Citat:

s (PCRE_DOTALL)
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.

 
Odgovor na temu

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.krusevac-2.tehnicom.net



+1 Profil

icon Re: preg_replace za [code] tag15.08.2002. u 04:21 - pre 264 meseci
To je to, hvala jos jednom.
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
93.86.35.*



+3 Profil

icon Re: preg_replace za [code] tag17.06.2009. u 10:55 - pre 180 meseci
dizem temu iz mrtvih al zato sto imam problem ...

uradim ovo
Code:
$description = "[vid]596[/vid] taj broj";
$search = "/\[vid\](.*)\[\/vid\]/isU";
$replace = "Broj je \\1";

$msg = preg_replace($search, $replace, $description);
echo $msg;


i ja za echo dobijem
Broj je 596 taj broj



a meni treba samo da zameni tj da ispise ...Broj je 596
i to je sve....u cemu gresim?
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: preg_replace za [code] tag17.06.2009. u 11:17 - pre 180 meseci
Pogrešno si shvatio ideju preg_replace-a... On ne treba da zameni ceo taj $description za tvoj $replace, već on menja taj pattern sa onim što mu ti pošalješ kao replacement:
Citat:
Searches subject for matches to pattern and replaces them with replacement.

Ono što ti hoćeš možeš da postigneš ovako:
Code:

$description = '[vid]596[/vid] taj broj';
$search = '/\[vid\](.+)\[\/vid\]/Uis';

preg_match($search, $description, $niz);

echo 'Broj je ' . $niz[1];
 
Odgovor na temu

bugsu
Vojvodina - Subotica

Član broj: 40006
Poruke: 381
93.86.35.*



+3 Profil

icon Re: preg_replace za [code] tag17.06.2009. u 11:23 - pre 180 meseci
jaooo ...puko sam definitivno ....dobro sam ja svatio ...to meni i treba...samo nzm sta mi bi da pitam...pad koncentracije izgleda :/


jer pravim embed kod ....i [vid] - [/vid] treba da zameni sa emebed kodom a ostalo ostavi :s.....izvini na cimanju ...
Say NO to pop culture!!!
Crno je uvek u modi....
 
Odgovor na temu

[es] :: PHP :: preg_replace za [code] tag

[ Pregleda: 3657 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.