Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odszukiwana fraza w tresci wiadomosci (malei duze litery) - PHP
Forum PHP.pl > Forum > PHP
hiper0007
  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;)
Pyton_000
Eeee....coś chyba pomieszałeś w zeznaniach.
hiper0007
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...

viking
Kod który tu podałeś wyszukuje link i zamienia go na ciąg a. Nic nie związane z tym co opisujesz.
Niree
Podaj kod, skąd bierzesz te $tresc, podejrzewam że z mysql.
hiper0007
  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.  
Niree
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.
hiper0007
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.  
trzczy
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
hiper0007
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
trzczy
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
hiper0007
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 ;(
trzczy
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.
hiper0007
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.
trueblue
http://snipplr.com/view/6718.8986/
trzczy
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.
Niree
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.
trzczy
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.
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.