Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]wyrażenie regularne dokładny wzorzec
Forum PHP.pl > Forum > Przedszkole
sazian
mam taki kod
  1. <?php
  2. $text="000000[y]11111 xxx[/y]22222[y]3333 xxxx[/y]4444";
  3.  
  4. $text= preg_replace("|[y](.*)xxx(.*)[/y]|U",'[y]1<b>xxx</b>2[/y]',$text);
  5. ?>

i wszystkie wyrażenia "xxx" między znacznikami "y" mają zostać pogrubione
po wykonaniu tego kodu otrzymuje
000000[y]11111 xxx[/y]22222[y]3333 xxxx[/y]4444
jak dopasować wzorzec aby wyrażenie xxxx nie zostało wogóle pogrubione questionmark.gif
Wieviór
yyy... nie wstawiać go pomiędzy [y][/y]? biggrin.gif
Cysiaczek
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole
nowotny
Cytat(sazian @ 3.02.2008, 12:42:29 ) *
jak dopasować wzorzec aby wyrażenie xxxx nie zostało wogóle pogrubione questionmark.gif

Może coś takiego: (nie sprawdzane)
  1. <?php
  2. $text= preg_replace("|[y](.*)x{3}[^x](.*)[/y]|U",'[y]1<b>xxx</b>2[/y]',$text);
  3. ?>
sazian
dobra może użyłem zbyt "ogólnego" zapisu
  1. <?php
  2. $text="000000[y]11111 add[/y]22222[y]3333 add2[/y]4444";
  3.  
  4. $text= preg_replace("|[y](.*)add(.*)[/y]|U",'[y]1<b>add</b>2[/y]',$text);
  5. $text= preg_replace("|[y](.*)add2(.*)[/y]|U",'[y]1<u>add2</u>2[/y]',$text);
  6. ?>

i w tym wypadku otrzymuje 000000[y]11111 add[/y]22222[y]3333 add2[/y]4444

a ja chce żeby add zostało pogrubione a aad2 podkreślone
nowotny
Tu wszystko zależy... czy ten string jest zawsze 'add' czy może się zmieniać...? czy jest zawsze trzy literowy czy może być dłuższy/krótszy...? czy zawsze po nim jest '[/y]' czy może być coś innego...? czy drugi string zawsze kończy się liczbą czy nie...?
sazian
1)stringi są różne tak jak w przykładzie(add pogrubiony , add2 podkreślony , a np. close czerwony )
2)mają różne długości (o ile o tym samym myślimy)
3)przed nim i za nim może być dowolny ciąg znaków
4)nie zawsze kończy się cyfrą, to jest coś w rodzaju do słów kluczowych
nowotny
Cytat(sazian @ 3.02.2008, 13:17:25 ) *
1)stringi są różne tak jak w przykładzie(add pogrubiony , add2 podkreślony , a np. close czerwony )

Czyli znasz te stringi z góry...? Może warto użyć czegoś prostszego a nie wyr. reg...
sazian
ja jestem otwarty na propozycje
tylko nie bardzo mam pomysł jak takie coś inaczej zrobić
nowotny
No to rzuć tymi stringami... w formie:
"string poszukiwany" => "to na co chcesz zamienić"

Tak na ślepo nie będziemy się tu produkować... tongue.gif
sazian
przykładowe stringi były podane
add => <b>add</b>
add2 => <u>add2</u>

ale ma je zamieniać tylko między znacznikami [y]
czyli tekst [y]add[/y] add ma wyglądać po "przerobieniu" tak add add
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.