Forum » Izdelava spletišč » PHP - stringi
PHP - stringi
pehape ::
Imam nekaj problemov s stringi, zato prosim za pomoč.
Imam eno textarea, kjer napišeš daljši komentar. Ta komentar lahko vsebuje recimo ->[neko številko] (npr. ->123). Rad bi, da string funkcije poiščejo ta "->123" in ga zamenjajo z novim stringom ki je npr. ->123.
Prvi problem nastane, kadar je character za "->123" recimo tabulator (\t) ali newline (\n) ali space(" ").
Drugi problem pa je, da zamenja amo prvi najdeni string. textarea pa lahko vsebuje več takšnih stringov (npr. test\n->123\n->124\n->125\n->126\ntest).
Torej, moja textarea vsebuje (primer html kode):
//textarea
test
->123
->124
->125
->126
test
//end of textarea
Kar jaz hočem da naredi je to:
//textarea
test
->123
->124
->125
->126
test
//end of textarea
Imam eno textarea, kjer napišeš daljši komentar. Ta komentar lahko vsebuje recimo ->[neko številko] (npr. ->123). Rad bi, da string funkcije poiščejo ta "->123" in ga zamenjajo z novim stringom ki je npr. ->123.
Prvi problem nastane, kadar je character za "->123" recimo tabulator (\t) ali newline (\n) ali space(" ").
Drugi problem pa je, da zamenja amo prvi najdeni string. textarea pa lahko vsebuje več takšnih stringov (npr. test\n->123\n->124\n->125\n->126\ntest).
Torej, moja textarea vsebuje (primer html kode):
//textarea
test
->123
->124
->125
->126
test
//end of textarea
Kar jaz hočem da naredi je to:
//textarea
test
->123
->124
->125
->126
test
//end of textarea
misek ::
$str = " test ->a888 ->123->124 ->125 ->126 test "; echo $str . "\n"; echo "***\n"; echo preg_replace('/->([0-9]{1,})/', '<a href="http://www.google.com/">->\\1</a>', $str, 1); echo "***\n"; echo preg_replace('/->([0-9]{1,})/', '<a href="http://www.google.com/">->\\1</a>', $str);
pehape ::
Zanima me še samo, kaj moram dodati, da če hočem najdit ta string: "->123 123"? s presledkom vmes (da ne upošteva tabulatorja ali newline, ampak samo presledek)
Edit: Hvala vseeno, sem že naredil.
Edit: Hvala vseeno, sem že naredil.
Zgodovina sprememb…
- spremenil: pehape ()
misek ::
echo preg_replace('/->([0-9]{1,} [0-9]{1,})/', '<a href="http://www.google.com/">->\\1</a>', $str, 1);
pehape ::
echo preg_replace('/->([0-9]{1,} [0-9]{1,})/', '<a href="http://www.google.com/">->\\..., $str, 1);
Če uporabim samo to vrstico, potem to ne deluje če hočem najdit "->123".
techfreak :) ::
echo preg_replace('/->([0-9]{1,}( [0-9]{1,}))/', '<a href="http://www.google.com/">->\\1</a>', $str, 1);
pehape ::
Tudi to ne deluje, žal. Kolikor se jas spomnim, se v excelu oz. calcu uporablja + in * na koncu oklepajev, da ponazoriš ali se naj:
- ponovi vsaj enkrat in do neskončno-krat (+),
- ali pa se ni treba pojavit, lahko pa se pojavi neskončno-krat (*),
tako nekako mislim da je.
vendar mi sintaksa ni pravilna.
- ponovi vsaj enkrat in do neskončno-krat (+),
- ali pa se ni treba pojavit, lahko pa se pojavi neskončno-krat (*),
tako nekako mislim da je.
vendar mi sintaksa ni pravilna.
misek ::
echo preg_replace('/->([0-9]{1,})( [0-9]{1,})?/', '<a href="http://www.google.com/">->\\1\\2</a>', $str, 1); echo "***\n"; echo preg_replace('/->([0-9]{1,})( [0-9]{1,})?/', '<a href="http://www.google.com/">->\\1\\2</a>', $str);
pehape ::
Imam še en majhen problem. Ko vstavim narekovaj ("), da bi mi ga v stringu zaznalo, mi ga ne. Poskusil sem z [:punct:] (vsebuje simbole kot so npr. !"#$%&/ itd.) in deluje, vendar je problem v tem, da vsebuje nedovoljene simbole, ki nesmejo bit vključeni.
Poskusil sem tudi: [[:punct:]^[znak ki ne sme biti vsebovan]], vendar ne deluje.
Poskusil sem tudi: [[:punct:]^[znak ki ne sme biti vsebovan]], vendar ne deluje.
Zgodovina sprememb…
- spremenil: pehape ()
pehape ::
Sem, ne dela.
Celoten izraz je npr: '->To se pobarva, "to pa ne"'
$pattern = '/->([A-Za-zčČšŠžŽđĐćĆë?éËÄÍ,.\" ]{1,})( [a-z]{1,})?/';
Celoten izraz je npr: '->To se pobarva, "to pa ne"'
$pattern = '/->([A-Za-zčČšŠžŽđĐćĆë?éËÄÍ,.\" ]{1,})( [a-z]{1,})?/';
Zgodovina sprememb…
- spremenil: pehape ()
pehape ::
Celoten izraz je npr: '->To se pobarva, "to pa ne"'
$pattern = '/->([A-Za-zčČšŠžŽđĐćĆë?éËÄÍ,.\" ]{1,})( [a-z]{1,})?/';
$pattern = '/->([A-Za-zčČšŠžŽđĐćĆë?éËÄÍ,.\" ]{1,})( [a-z]{1,})?/';
pehape ::
imam string '->To se pobarva, "in tudi to"'
Z regex hočem da mi najde ta celoten niz znakov, ki ga kasneje spremeni v link (da mi spremeni v link pa že deluje).
Z regex hočem da mi najde ta celoten niz znakov, ki ga kasneje spremeni v link (da mi spremeni v link pa že deluje).
<php $string = "->To se pobarva, \"in tudi to\""; //->To se pobarva, "in tudi to" $string = preg_replace(...); echo $string; //<a href="www.google.com">->To se pobarva, "in tudi to"</a> ?>
Zgodovina sprememb…
- spremenil: pehape ()
misek ::
Tole meni deluje
$str = ' test ->a888 ->123->124 ->125 ->125" ->To se pobarva, "to pa ne" ->125 ->123 123 ->126 test '; echo $str . "\n"; echo "***\n"; echo preg_replace('/->([0-9"]{1,})( [0-9]{1,})?/', '<a href="http://www.google.com/">->\\1\\2</a>', $str, 1); echo "***\n"; echo preg_replace('/->([0-9"]{1,})( [0-9]{1,})?/', '<a href="http://www.google.com/">->\\1\\2</a>', $str); echo "***\n"; $pattern = '/->([A-Za-zčČđĐćĆë?éËÄÍ,." ]{1,})( [a-z]{1,})?/'; echo preg_replace($pattern, '<a href="http://www.google.com/">->\\1\\2</a>', $str); echo "***\n";
test ->a888 ->123->124 ->125 ->125" ->To se pobarva, "to pa ne" ->125 ->123 123 ->126 test *** test ->a888 <a href="http://www.google.com/">->123</a>->124 ->125 ->125" ->To se pobarva, "to pa ne" ->125 ->123 123 ->126 test *** test ->a888 <a href="http://www.google.com/">->123</a><a href="http://www.google.com/">->124</a> <a href="http://www.google.com/">->125</a> <a href="http://www.google.com/">->125"</a> ->To se pobarva, "to pa ne" <a href="http://www.google.com/">->125</a> <a href="http://www.google.com/">->123 123</a> <a href="http://www.google.com/">->126</a> test *** test <a href="http://www.google.com/">->a</a>888 ->123->124 ->125 ->125" <a href="http://www.google.com/">->To se pobarva, "to pa ne"</a> ->125 ->123 123 ->126 test ***
Zgodovina sprememb…
- spremenil: misek ()
pehape ::
Hmm, tvoja koda meni tudi deluje. Ampak jaz ne uporabjam stringa $str kot spremenljivko z nizom znakov, jaz uporabljam textarea in zgleda da zato nedela... Čudno...
pehape ::
Textarea ne bi smela nič pokvarit znake. Znaki se shranijo v spremenljivko $comment
Vhodna vsebina je pa že znana: ->To se pobarva "in to tudi".
Primer kode, ki ne dela:
<textarea name="str" cols="20" rows="2"></textarea>, nato pride do preg_replace, jo shrani v PB in prebere ven.
Vhodna vsebina je pa že znana: ->To se pobarva "in to tudi".
Primer kode, ki ne dela:
<body> <? if(isset($_POST['Submit'])) { $pattern = '/->([A-Za-zčČđĐćĆë?éËÄÍ,." ]{1,})( [a-z]{1,})?/'; echo preg_replace($pattern, '<a href="http://www.google.com/">->\\1\\2</a>', $str); echo "***\n"; } ?> <br/> <form method="post" action=""> <textarea name="str" cols="20" rows="2"></textarea> <input name="Submit" type="submit" value="submit" /> </form> </body>
Zgodovina sprememb…
- spremenil: pehape ()
pehape ::
vpišem: ->lol "lol"
izpis pred preg_replace: ->lol \"lol\"
izpis po preg_replace: ->lol \"lol\"
če v $pattern dodam \" vseeno ne dela...
izpis pred preg_replace: ->lol \"lol\"
izpis po preg_replace: ->lol \"lol\"
če v $pattern dodam \" vseeno ne dela...
Zgodovina sprememb…
- spremenil: pehape ()
pehape ::
Hmm, tega pa ne razumem kaj si mislil s tem. Lahko prosim kopiraš preg_replace?
Edit: Ni važno, dela zdaj :). Najlepša hvala za pomoč.
Edit: Ni važno, dela zdaj :). Najlepša hvala za pomoč.
Zgodovina sprememb…
- spremenil: pehape ()
misek ::
Le zakaj nisem tega naredil že prej?
Lahko pa bi v vhodnem stringu najprej pretvoril \" v ".
$pattern = '/->([A-Za-zčČđĐćĆë?éËÄÍ,."\\\\ ]{1,})( [a-z]{1,})?/';Torej imaš znak " in \\\\ za iskanje " in \.
Lahko pa bi v vhodnem stringu najprej pretvoril \" v ".
Zgodovina sprememb…
- spremenil: misek ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Javascript DOM based XSS vulnerabilityOddelek: Programiranje | 2825 (2247) | MrStein |
» | [php] brisanje nedovoljenih znakovOddelek: Izdelava spletišč | 1433 (1281) | keworkian |
» | [PHP in/ali JS] skripta, ki gre cez celo stran in zamenja tekst med custom tagiOddelek: Izdelava spletišč | 1137 (1043) | jernejl |
» | Regularni izrazi....Oddelek: Programiranje | 2340 (1729) | BigWhale |
» | [php]: preprost problem in preg_replace()Oddelek: Izdelava spletišč | 1131 (1069) | R33D3M33R |