![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 11.09.2006 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
Witam mam coś takiego
teraz potrzebuje z $dane wykasować fragment o linku czyli: <a href=34524>opis</a> nie było by problemu gdyby te cyfry były stałe. funkcja str_replace() załatwia sprawe. ale niestety cyfry w tym kodzie mogą się zmieniać i dlatego prosze was o pomoc. chce wkasować wszystko z kodem <a href..(dowolna wartość)../a> |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 11.09.2006 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
Cytat a może po prostu chcesz pozbyć się html? wręcz przeciwnie chce kasować tylko linki. reszta ma zostać. w reszcie jest kod html (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) JoShiMa właśnie takiej odpowiedzi się bałem. czytałem sporo o wyrażeniach regularnych ale za żadne skarby nie moge ich pojąć. do tej pory udawało mi się je omijać ale teraz chyba nie mam jak. twój kod który podałeś faktycznie znajduje i usuwa całe polecenia <a href jednak znika również to co jest za nimi. czyli z przykładu $dane="tekst pierwszy <a href=fsdfsdfd>fsdfs</a> tekst drugi <a href=dadasd>fdsaffd</a> tekst trzeci"; pozostaje mi tylko "tekst pierwszy" a chciałbym tekst drugi i trzeci też zobaczyć (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Moge prosić o dokładny kod bo raczej sam tych wyrażej nie rozgryze. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
JoShiMa właśnie takiej odpowiedzi się bałem. czytałem sporo o wyrażeniach regularnych ale za żadne skarby nie moge ich pojąć. do tej pory udawało mi się je omijać ale teraz chyba nie mam jak. To błąd trzeba ćwiczyć, ćwiczyć i jeszcze raz ćwiczyć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Wyrażenia regularne wiele rzeczy upraszczają. A jak chcesz się ich pouczyć to się zainteresuj książkami do PERLa. Aha i masz tu link do testera wyrażeń regularnych. Bardzo przydatne narzędzie jak się ćwiczy. twój kod który podałeś faktycznie znajduje i usuwa całe polecenia <a href jednak znika również to co jest za nimi. czyli z przykładu $dane="tekst pierwszy <a href=fsdfsdfd>fsdfs</a> tekst drugi <a href=dadasd>fdsaffd</a> tekst trzeci"; pozostaje mi tylko "tekst pierwszy" a chciałbym tekst drugi i trzeci też zobaczyć (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Moge prosić o dokładny kod bo raczej sam tych wyrażej nie rozgryze. Aha... Tego, że masz tam w tekście więcej niż jeden link to nie powiedziałeś. Tak naprawdę powinien zostać tekst pierwszy i tekst trzeci. Zaraz coś pokombinuję. Aaaa. Już masz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) mateuszpi nudzi mi się to Ci wyjaśnię różnicę w moim wyrażeniu regularnym i w rozwiązaniu elemka. Zaproponowane przez niego
Mozna zapisac również w następujący sposób:
Możesz sprawdzić, że zadziałają tak samo a to już jest bardzo podobne to tego co ja Ci zaproponowałam:
Zasadnicza różnica tkwi w tym, że u elemka jest *? a u mnie * * oznacza dopasowanie 0 lub więcej razy i jest kwantyfikatorem maksymalistycznym *? też oznacza dopasowanie 0 lub więcej razy ale jest kwantyfikatorem minimalistycznym Dlatego użycie * dopasuje ciąg od pierwszego <a do ostatniego /a> bo stara się dopasować jak najdłuższy ciąg znaków pasujący do wzorca, natopmiast użycie *? dopasuje najkrótsze możliwe ciągi między <a i /a> i w przypadku gdy w tekście masz kilka odnośników powycina ci je zgodnie z Twoimi oczekiwaniami. Ten post edytował JoShiMa 10.09.2008, 13:03:23 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 17:24 |