Skocz do zawartości

Pogrubianie całych wyrazów w tekście


KamilS

Rekomendowane odpowiedzi

Witam!

Mam taki problem. Potrzebujuję funkcji, która pogrubi wszystkie dane wyrazy w tekście zawartym w zmiennej typu string, ale występujące w różnych przypadkach. Dajmy na to w tekście mam "Jakiś kret zbudował kretowisko w ogrodzie". Szukany wyraz to "kret". A końcowy efekt to "Jakiś <b>kret</b> zbudował <b>kretowisko</b> w ogrodzie".

Za pomocą funkcji str_replace() jestem w stanie pogrubić tylko cześć "kret" w wyrazie "kretowisko", czyli inny efekt niż potrzebuję.

Z góry dzięki za wszelkie porady i podpowiedzi :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli słowo "krecik" (nie występuje tam "kret") też ma być pogrubione, to trzeba korzystać ze słowników i będzie to trudne.

Jeżeli jednak chodzi o pogrubienie tylko słów które zawierają w sobie dany wyraz to najłatwiej będzie chyba wczytać string do tablicy, tak by każde słowo było oddzielnym elementem, przeszukać w pętli tablicę pod kątem występowania szukanych słów i jeżeli znajdziemy to zmieniamy dany element na jego pogrubioną wersję. Pod koniec sklejamy tablicę w ciąg.

Przydatne funkcję: explode, implode, strpos. Ewentualnie array_walk ale prościej będzie szukać w pętli :)

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

$bold = "kret";
$string = "Jakiś kret zbudował kretowisko w ogrodzie";
$tab = explode(' ',$string);

foreach ($tab as $key => $val)
{
if(strstr($val, $bold)) $tab[$key] = '<b>'.$val.'</b>';
}

$ok = implode(' ',$tab);

Coś takiego.

1. Wrzucasz to tablicy string / rozdzielasz każde słowo spacją

2. Jeżeli dane słowo zawiera ciąg zdefiniowany to zamień na <b> cały wyraz

3. Złącz tekst.

a9177b36246d7ce96fa698c9971dd36b.png

Sprzęt akwarystyczny kupuj w moim - sklep akwarystyczny.

Usługi informatyczne oraz reklamowe w tym pozycjonowanie w częstochowie

Odnośnik do komentarza
Udostępnij na innych stronach

Chciałem wyjść z takim podejściem PRO edukacyjnym, a sekundy później i tak pojawiło się gotowe rozwiązanie :D

Strpos jest szybsze i zalecane do takich zastosowań :)

If you only want to determine if a particular needle occurs within haystack, use the faster and less memory intensive function strpos() instead.

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

pisałem z palca, powinno zadziałać, ale niech autor się już sam dokształci co i jak dlaczego i niech sobie rozbuduje ten prosty kod.

for($a = 0 ; $a<=sizeof($tablica); $a++)

gdzieś mi się kiedyś obilo, że

pętla for + sizeof też chyba powinna szybciej chodzić niż foreach.

Pozdrawiam

a9177b36246d7ce96fa698c9971dd36b.png

Sprzęt akwarystyczny kupuj w moim - sklep akwarystyczny.

Usługi informatyczne oraz reklamowe w tym pozycjonowanie w częstochowie

Odnośnik do komentarza
Udostępnij na innych stronach

Przy sizeof() wykonywanym przy każdej iteracji (tak jak w Twoim przykładzie) raczej szybciej nie będzie :)

Poza tym jest też kwestia czytelności/użyteczności, moim prywatnym zdaniem gdy chcemy prze-iterować przez wszystkie elementy tablicy, to foreach jest dużo wygodniejsze/prostsze w zapisie, niż zabawa w for :) Pętli "for", prywatnie, używam tylko gdy potrzebuję iterować daną liczbę razy, albo po danym przedziale tablicy, a nie po całej :)

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

Zainteresuj się funkcjami z grupy preg_match

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności