Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odszukiwana fraza w tresci wiadomosci (malei duze litery) - PHP, PHP
hiper0007
post 8.12.2016, 23:15:54
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


  1.  
  2. $subject = $tresc;
  3. $pattern = '#(https?://[^ ]*)#';
  4. $replacement = '<a style="font-weight:normal; text-decoration:underline;" target="_blank" href="\\1" class="login13">\\1</a>';
  5. $result = preg_replace($pattern, $replacement, $subject);
  6.  
  7.  
  8.  
  9.  
  10. $result3 = str_ireplace($fraza, "<span style='color:black; background-color:lime;'>".$fraza."</span>", $result);
  11.  
  12.  


Dziala odnajduje mi fraze w tekscie i zaznacza ja innym kolorem czcionki tylko jak wpisze "Fi" to zamienia mi wszystkie frazy w tekscie na "Fi" (na pierwsza duza litere), a jak wpisze "fi" to zamienia mi wszystkie na "fi" (na pierwsza mala litere), a ma odnajdywać ale nie zmieniać wilekości liter...



Juz się mecze z tym kilka dni i nie moge nic wymyslec wink.gif Prosze jakaś osobę o pomoc;)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
Pyton_000
post 9.12.2016, 14:42:07
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Eeee....coś chyba pomieszałeś w zeznaniach.
Go to the top of the page
+Quote Post
hiper0007
post 10.12.2016, 00:57:04
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 9.12.2016, 14:42:07 ) *
Eeee....coś chyba pomieszałeś w zeznaniach.


Mam tekst
"Mama szła do kina na film o Finansach i kocha takie filmy". - to jest $tresc

Mam input do ktorego wpisuje szukana fraze "fi"

Znajduje mi trzy frazy "film" "Finansach" "filmy"

Znajduje i koloruje te frazy na wybrany kolor ALE zamienia na "film" "finansach" "filmy"

Słowo "Finansach" zamienia na "finansach" - pierwsza litere na mała tak jak wpisalem w inpucie

Mam input do ktorego wpisuje szukana fraze "Fi"

Znajduje mi trzy frazy "film" "Finansach" "filmy"

Znajduje i koloruje te frazy na wybrany kolor ALE zamienia na "Film" "Finansach" "Filmy"

Słowo "film" zamienia na "Film" slowo "filmy" na "Filmy" - pierwsza litere na duza tak jak wpisalem w inpucie

A ma odszukiwać i kolorować bez zmiany wielkości liter...

Go to the top of the page
+Quote Post
viking
post 10.12.2016, 12:24:55
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Kod który tu podałeś wyszukuje link i zamienia go na ciąg a. Nic nie związane z tym co opisujesz.


--------------------
Go to the top of the page
+Quote Post
Niree
post 11.12.2016, 02:08:22
Post #5





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

Ostrzeżenie: (0%)
-----


Podaj kod, skąd bierzesz te $tresc, podejrzewam że z mysql.
Go to the top of the page
+Quote Post
hiper0007
post 11.12.2016, 17:49:20
Post #6





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


  1.  
  2. $result3 = str_ireplace($fraza, "<span style='color:black; background-color:lime;'>".$fraza."</span>", $result);


Tutaj jest zamiana frazy szukanej na frazę zaznaczona innym kolorem czcionki.

Tak $tresc biorę z bazy danych mysql tzn. Zapytaniem wyciągam szukaną frazę z tresci postu $tresc %$fraza% ale dokładny kod prześle za. 3 godz jak będę mail dostęp do kompa stacjonarnego bo teraz pisze z komórki.

Cytat(Niree @ 11.12.2016, 02:08:22 ) *
Podaj kod, skąd bierzesz te $tresc, podejrzewam że z mysql.



  1.  
  2. $rezultat=$polaczenie2->query("SELECT * FROM topic, uzytkownicy WHERE tytul LIKE '%$fraza%' AND uzytkownicy.idu=topic.idu OR tresc LIKE '%$fraza%' AND uzytkownicy.idu=topic.idu");
  3. if (!$rezultat) throw new Exception($polaczenie2->error);
  4.  
Go to the top of the page
+Quote Post
Niree
post 12.12.2016, 10:16:32
Post #7





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

Ostrzeżenie: (0%)
-----


Musisz dopisać do funkcji str_ireplace warunek, który sprawdza, czy litery w danym wyrazie są małe, czy duże.
Wyszukane słowa (czyli $pattern jak mniemam), wrzucasz w funkcji do jakiejś tablicy, robisz pętlę na tyle razy ile ma dana tablica indeksów, sprawdzasz wielkość znaków i dajesz return duża litera lub mała litera.
Go to the top of the page
+Quote Post
hiper0007
post 12.12.2016, 22:36:57
Post #8





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


Cytat(Niree @ 12.12.2016, 10:16:32 ) *
Musisz dopisać do funkcji str_ireplace warunek, który sprawdza, czy litery w danym wyrazie są małe, czy duże.
Wyszukane słowa (czyli $pattern jak mniemam), wrzucasz w funkcji do jakiejś tablicy, robisz pętlę na tyle razy ile ma dana tablica indeksów, sprawdzasz wielkość znaków i dajesz return duża litera lub mała litera.



Coś w tym stylu??

  1.  
  2. echo $fraza="Mariusz";
  3.  
  4.  
  5. echo $dlugosc=strlen($fraza);
  6.  
  7.  
  8. echo $fraza1="";
  9.  
  10.  
  11. for ($i=0;$i<$dlugosc ;$i++)
  12. {
  13.  
  14. if($fraza[$i]==strtoupper("A"))
  15. {
  16. echo $fraza1=$fraza1.strtoupper("A");
  17. }else{
  18. echo $fraza1=$fraza1.strtolower("a");
  19. }
  20.  
  21. }
  22.  
Go to the top of the page
+Quote Post
trzczy
post 13.12.2016, 00:55:52
Post #9





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


regex option i
  1. <?php
  2. $subject = 'Lorem toffi ipsum Film dolor fiksacja sit amet';
  3. $pattern = '/[^\s]*fi[^\s]*/i';
  4. $result = preg_replace(
  5. $pattern,
  6. '<a style="color: red;">\\0</a>',
  7. $subject);
  8. echo $result;
  9. //Lorem <a style="color: red;">toffi</a> ipsum <a style="color: red;">Film</a> dolor <a style="color: red;">fiksacja</a> sit amet


Ten post edytował trzczy 13.12.2016, 02:11:11
Go to the top of the page
+Quote Post
hiper0007
post 13.12.2016, 15:22:37
Post #10





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


Cytat(trzczy @ 13.12.2016, 00:55:52 ) *
regex option i
  1. <?php
  2. $subject = 'Lorem toffi ipsum Film dolor fiksacja sit amet';
  3. $pattern = '/[^\s]*fi[^\s]*/i';
  4. $result = preg_replace(
  5. $pattern,
  6. '<a style="color: red;">\\0</a>',
  7. $subject);
  8. echo $result;
  9. //Lorem <a style="color: red;">toffi</a> ipsum <a style="color: red;">Film</a> dolor <a style="color: red;">fiksacja</a> sit amet


Super działa tylko chodzi oto ze ma zaznaczyć tylko szukaną frazę a w Twoim kodzie zaznacza caly wyraz w ktorym znajduje sie szukana fraza
Go to the top of the page
+Quote Post
trzczy
post 13.12.2016, 18:41:20
Post #11





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Cytat(hiper0007 @ 13.12.2016, 15:22:37 ) *
Super działa tylko chodzi oto ze ma zaznaczyć tylko szukaną frazę a w Twoim kodzie zaznacza caly wyraz w ktorym znajduje sie szukana fraza

To kwestia patternu regexa
  1. <?php
  2. $subject = 'Lorem tofifi ipsum Film dolor fiksacja sit amet';
  3. $pattern = '/fi/i';
  4. $result = preg_replace(
  5. $pattern,
  6. '<a style="color: red;">\\0</a>',
  7. $subject);
  8. echo $result;
  9. //Lorem to<a style="color: red;">fi</a><a style="color: red;">fi</a> ipsum <a style="color: red;">Fi</a>lm dolor <a style="color: red;">fi</a>ksacja sit amet
Go to the top of the page
+Quote Post
hiper0007
post 13.12.2016, 19:32:34
Post #12





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


Cytat(trzczy @ 13.12.2016, 18:41:20 ) *
To kwestia patternu regexa
  1. <?php
  2. $subject = 'Lorem tofifi ipsum Film dolor fiksacja sit amet';
  3. $pattern = '/fi/i';
  4. $result = preg_replace(
  5. $pattern,
  6. '<a style="color: red;">\\0</a>',
  7. $subject);
  8. echo $result;
  9. //Lorem to<a style="color: red;">fi</a><a style="color: red;">fi</a> ipsum <a style="color: red;">Fi</a>lm dolor <a style="color: red;">fi</a>ksacja sit amet


  1.  
  2. $subject = $tresc;
  3. $pattern = '#(https?://[^ ]*)#';
  4. $replacement = '<a style="font-weight:normal; text-decoration:underline;" target="_blank" href="\\1" class="login13">\\1</a>';
  5. $result = preg_replace($pattern, $replacement, $subject);
  6.  
  7.  
  8. $pattern2 = '/'.$fraza.'/i';
  9. $result2 = preg_replace($pattern2,'<a style="color:black; background-color:lime;">\\0</a>',$result);
  10.  


I juz wszystko jest ok;) Dzieki ziomek za pomoc i ost. pytanko wink.gif
Ale jak wyszukam frazę która znajduje się w linku np. Szukam frazy="one" a treść="Mama czyta info na http://onet.pl"
Pierwsza część skryptu przekształca napis w link natomiast jak zrobie wyszukanie to mi rozwala link np. onet.pl" class="login13">http://www.onet.pl. i link nie dziala ;(
Go to the top of the page
+Quote Post
trzczy
post 13.12.2016, 20:14:44
Post #13





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Chaotycznie jakoś pytasz. Może napisz CO ma być przetworzone na CO. Podaj nawet kilka przykładów. Bez uogólnień i skrótów myślowych.
Go to the top of the page
+Quote Post
hiper0007
post 13.12.2016, 20:43:58
Post #14





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 6.06.2016

Ostrzeżenie: (0%)
-----


Cytat(trzczy @ 13.12.2016, 20:14:44 ) *
Chaotycznie jakoś pytasz. Może napisz CO ma być przetworzone na CO. Podaj nawet kilka przykładów. Bez uogólnień i skrótów myślowych.


$tresc="Mama siedzi na komputerze i czyta wiadomości na http://www.onet.pl. Mama i siostra sa podobne one lubią grać wspolnie w gry planszowe One sa jedyne w swoim rodzaju."

$fraza="one"

Wyszukać i zaznaczyć innym kolorem czcionki szukaną frazę w tresci wiadomości przy czym fraza "one" wystepuje rownież w treści linka który przekształcony za pomocą

  1. $subject = $tresc;
  2. $pattern = '#(https?://[^ ]*)#';
  3. $replacement = '<a style="font-weight:normal; text-decoration:underline;" target="_blank" href="\\1" class="login13">\\1</a>';
  4. $result = preg_replace($pattern, $replacement, $subject);
  5.  


Ulega zepsuciu po wyszukaniu danej frazy


  1. $pattern2 = '/'.$fraza.'/i';
  2. $result2 = preg_replace($pattern2,'<a style="color:black; background-color:lime;">\\0</a>',$result);
  3.  


Wyszukanie juz dziala ale po porstu psuje link w tresci wiadomosci a po zaznaczeniu frazy w linku powinien on jeszcze odsylac poprawnie do wybranej strony.
Go to the top of the page
+Quote Post
trueblue
post 13.12.2016, 20:47:53
Post #15





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://snipplr.com/view/6718.8986/


--------------------
Go to the top of the page
+Quote Post
trzczy
post 13.12.2016, 21:54:38
Post #16





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Cytat(hiper0007 @ 13.12.2016, 20:43:58 ) *
$tresc="Mama siedzi na komputerze i czyta wiadomości na http://www.onet.pl. Mama i siostra sa podobne one lubią grać wspolnie w gry planszowe One sa jedyne w swoim rodzaju."
$fraza="one"


Zatem powyżej są dane wejściowe. I teraz: nie opisuj, co działa, a co nie działa, tylko podaj, co ma się znaleźć na wyjściu. Pewnie jakiś string. Więc go wymyśl i tu wklej.
Go to the top of the page
+Quote Post
Niree
post 14.12.2016, 02:06:38
Post #17





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

Ostrzeżenie: (0%)
-----


Przecież podał Ci.

  1. $tresc="Mama siedzi na komputerze i czyta wiadomości na http://www.onet.pl. Mama i siostra sa podobne one lubią grać wspolnie w gry planszowe One sa jedyne w swoim rodzaju.";
  2.  
  3. $fraza="one";
  4.  
  5. //reszta kodu, replace itp, na końcu $result


Rozlatuje mu się link, który nie odsyła do poprawnej strony.

Wydaje mi się, że miałeś już na to kod? Po prostu musisz później zmieniony kod (po wyszukaniu słowa i nadaniu mu koloru) ponownie przekształcić, wyszukując link, a następnie zmienić go w hyperlink.

  1. $subject = $result;
  2. $pattern = '#(https?://[^ ]*)#';
  3. $replacement = '<a style="font-weight:normal; text-decoration:underline;" target="_blank" href="\\1" class="login13">\\1</a>';
  4. $result = preg_replace($pattern, $replacement, $subject);

//nie wiem czy działa, to Twój kod z poprzednich postów.

Ten post edytował Niree 14.12.2016, 02:07:57
Go to the top of the page
+Quote Post
trzczy
post 14.12.2016, 13:06:07
Post #18





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Cytat(Niree @ 14.12.2016, 02:06:38 ) *
Przecież podał Ci.
Nie podał. A przynajmniej nie mogę znaleźć. Jest tylko opisowo podane, czego autor wątku się spodziewa. Takie pytania o konwersje czegoś na coś, takie wątki forum, powinny zawierać konkretnie podany spodziewany wynik. Powinny też pokazać inne przykłady działania.

Np.

Cytat
Pracuję nad aplikacją, która zamienia co drugą literę na dużą. Aplikacja uwzględnia parametr w, który oznacza, że cyfry pomija się w rozważaniach. Przykłady działania tej aplikacji:

DANE WEJŚCIOWE: abcd w=true WYNIK: aBcD
DANE WEJŚCIOWE: a5bcd w=true WYNIK: a5BcD
DANE WEJŚCIOWE: abcd w=false WYNIK: a5bCd
DANE WEJŚCIOWE: 123c56 w=true WYNIK: 123C56
DANE WEJŚCIOWE: 123c56 w=false WYNIK: 123c56


Powyższy przykład podania problemu rozwiewa mnóstwo wątpliwości. Pomimo że wydaje się, że sam opis

Cytat
Pracuję nad aplikacją, która zamienia co drugą literę n dużą. Aplikacja uwzględnia parametr w, który oznacza, że cyfry pomija się w rozważaniach.
byłby wystarczający.

A i tak Pomagająca Osoba może mieć jeszcze pytania do Autora Wątku np. co robić z białymi znakami itp.

Ten post edytował trzczy 14.12.2016, 13:13:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 01:30