![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 143 Pomógł: 1 Dołączył: 14.11.2007 Ostrzeżenie: (10%) ![]() ![]() |
Sprawa wygląda następująco....
mam ciąg tekstowy, założmy Cytat City View [by nikon] w nawiasie kwadratowym może znajdować się wszelaki tekst. Chciałbym, aby ten cały nawias był odcinany, czyli w powyższym przypadku zostałby tekst "City View". Do tej pory robiłem to funkcją explode - dzieliłem tekst od znaku "[". Niestety rozwiązanie to nie jest już odpowiednie, dlatego proszę o pomoc w konstrukcji wyrażenie dla funkcji preg_replace |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
nie powiem Ci jak ma wyglądać to wyrażenie w php, bo podawanie gotowców nie służy nauce
![]() masz funkcję przyjmuje ona 3 argumenty - wzór (ang. pattern), zamiennik oraz tekst do podmiany Ty chcesz, żeby zamieniało wszystko co jest wewnątrz nawiasów [] razem z nimi, więc Twój wzór powinien wyglądać mniej-więcej tak: [i tutaj dowolny ciąg znaków] do skonstruowania takiego wyrażenia wystarczą całkowite podstawy, dlatego odsyłam do dobrego tutoriala ![]() http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych Ten post edytował Pawel_W 30.03.2010, 07:41:23 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 143 Pomógł: 1 Dołączył: 14.11.2007 Ostrzeżenie: (10%) ![]() ![]() |
Powiem szcerze, że ten tutorial strasznie ubogi jest i początkującemu trundo jest to zrozumieć. Oczywiście wcześniej szukałem też innych objaśnień ale w sieci nie spotkałem dobrego poradnika po polsku. Więc kombinuje sam. Oto co próbowałem zrobić:
Niestety ten fragment kodu nie zmienia nic w tekście. Ten post edytował axwell 30.03.2010, 15:28:55 |
|
|
![]()
Post
#4
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Wywal te nawiasy kwadratowe z $pattern
//edit: ten pierwszy i ostatni -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 143 Pomógł: 1 Dołączył: 14.11.2007 Ostrzeżenie: (10%) ![]() ![]() |
na razie ustawiłem sobie żeby zamieniało to na 1 zebym widział jak to chodzi. No i jest pewien postęp, wynik to: Cytat 1111 1111 [11 11111] Domyślam się, że musze do $pattern dodać informację, że przed nawiasem jeszce występuje tekst. Jak połączyć to z tym co już mam? Próbowałem znakiem + tak jak w tutorialu ale PHP pokazuje błąd "Unknown modifier '+' " |
|
|
![]()
Post
#6
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
escapuj znaki [ i ] /\[a-zA-Z\.\-\_\]/.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
yy, w tym wypadku [ ] oznacza klasę znaków a nie znak [ lub ], dlatego się go nie escapuje... wiec co oznaczają te nawiasy, w takim razie powiedz mi jak byś kazał temu regexpowi wyciągnąć coś co ma pomiędzy [ i ] bez zdefiniowania ich. aha i ja bym robił coś w stylu: /\[.*\]/ edit. można też pomyśleć o zachłanności tego wyrażenia.
Powód edycji: [piotrooo89]:
-------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 9.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko ładnie pięknie, ale co zrobić w momencie, gdy np z takiego linku:
Kod http://oglaszajtu.pl/ogloszenia/54/Dom Wieruszów, pow. 150m2 chcę usunąć "," i "." no i do tego spację zamienić na "-" A od poczatku to tak: 1. Generuję sobie plik .xml kodem:
spacje zamieniłem już na "-" ale pozostaje sprawa wywalenia "," i ".". Podpowie ktoś w którą stronę spojrzeć? bo próbowałem tak jak w manualu pokazują array(), ale wywala mi bład. jak widać tutaj Kod $kanalRSS .= '<url><![CDATA[http://oglaszajtu.pl/ogloszenia/'.$wiersz['annoucement_id'].'/'.$wiersz['annoucement_title'].']]></url>'; $kanalRSS .= '<title><![CDATA['.$string.']]></title>'; dałem dwie $, które sa niemal tym samym, tyle tylko, że musiałem to tak zagmatwać, gdyż w linku ma usuwać pewne znaki i zamieniać, zas poniżej w title ma je zostawiać, a innego rozwiaznaia nie znalazłem/wymyśliłem. A i jeszcze sprawa zamiany dużych liter na małe
taki kodzik nie daje efektu, mało tego usuwa mi końcówkę adresu/urla. Ten post edytował rel 11.02.2014, 13:40:54 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jesli okreslasz konkretne znaki jaki chcesz zamieniac, to nie mieszaj do tego preg_replace, tylko poprostu str_replace.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 9.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jak zwykle nospor niezawodny, str_replace wywaliło co trzeba i zamieniło również. pozostają wielki elitery, które też mi tutaj zawadzają, jakiś pomysł na to?
Jestem u końca roboty, która jak dotąd była dla mnie czymś niedoścignionym :-) Ten post edytował rel 11.02.2014, 14:42:20 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Manual tez jest niezawodny
http://pl1.php.net/manual/en/function.strtolower.php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 9.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Manual tez jest niezawodny http://pl1.php.net/manual/en/function.strtolower.php No tak tylko jak to wszystko połączyć? Tzn string_tags, str_replace i do tego strtolower? i czy polskie znaki tutaj moge też usunąć za pomoca str_replace podczas usuwania spacji i , oraz .? Ten post edytował rel 11.02.2014, 14:52:44 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jak nie wiesz jak ro rób po kolei
$string = str_replace.. $string = strtolower($string) $string = strip_tags($string) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 9.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Najłatwiej uczyc się metodą prób i błędów
![]() |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 9.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
1. Spacje zamienia na "-" ok. 2. Usuwa "," i "." ok. 3. Duże na małe zamienia - ok 4. Nie zamienia pl znaków na en - not ok :-( ktoś podpowie gdzie leży problem? Ten post edytował rel 12.02.2014, 08:39:56 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:43 |