, jak napisać skrypt, który podział na całe słowo, jeśli zawiera ono słowo kluczowe? przykład: słowo kluczowe "zabawa", ciąg znaków - ptak jest zabawny, wynik - ptak jest * zabawny *. Wykonuję następujące czynności: ale jest to tylko słowo kluczowe w formacie menshions. mój ptak jest zabawa nypodświetlić słowo w łańcuchu, jeśli zawiera ono słowo kluczowe
Odpowiedz
Spróbuj tego:
preg_replace("/\w*?$keyword\w*/i", "<b>$0</b>", $str)
\w*?
mecze wszelkie znaki słowne przed słowo kluczowe (najmniej jak to możliwe) i \w*
dowolne znaki słowne po słowie kluczowym.
A ja polecam użyć preg_quote
uciec słowa kluczowego:
preg_replace("/\w*?".preg_quote($keyword)."\w*/i", "<b>$0</b>", $str)
Na wsparcie Unicode, należy użyć flagi u i \p{L}
zamiast \w
:
preg_replace("/\p{L}*?".preg_quote($keyword)."\p{L}*/ui", "<b>$0</b>", $str)
można wykonać następujące czynności:
$str = preg_replace("/\b([a-z]*${keyword}[a-z]*)\b/i","<b>$1</b>",$str);
Przykład:
$str = "Its fun to be funny and unfunny";
$keyword = 'fun';
$str = preg_replace("/\b([a-z]*${keyword}[a-z]*)\b/i","<b>$1</b>",$str);
echo "$str"; // prints 'Its <b>fun</b> to be <b>funny</b> and <b>unfunny</b>'
@codaddict wiem, że w regularnych wyrażeń $ oznacza koniec czegoś. , ale co to znaczy w scenariuszu? i dlaczego {simbols zamiast (? – Simon
@Syom: To jest tylko dla PHP, aby rozróżnić między zmiennymi a literalną zawartością łańcucha w podwójnie cytowanych deklaracjach łańcuchowych: '" $ foobar "' zostanie oszacowane do wartości '$ foobar', podczas gdy '" ($ foo} bar "'/'" $ {foo} bar "' zostanie ocenione na wartość '$ foo' połączoną z' bar'. Patrz http://php.net/manual/en/language .types.string.php # language.types.string.parsing dla dalszych informacji – Gumbo
wyszukiwanie i podświetlić słowo w łańcuchu, tekście, treści i akapicie:
<?php $body_text='This is simple code for highligh the word in a given body or text'; //this is the body of your page
$searh_letter = 'this'; //this is the string you want to search for
$result_body = do_Highlight($body_text,$searh_letter); // this is the result with highlight of your search word
echo $result_body; //for displaying the result
function do_Highlight($body_text,$searh_letter){ //function for highlight the word in body of your page or paragraph or string
$length= strlen($body_text); //this is length of your body
$pos = strpos($body_text, $searh_letter); // this will find the first occurance of your search text and give the position so that you can split text and highlight it
$lword = strlen($searh_letter); // this is the length of your search string so that you can add it to $pos and start with rest of your string
$split_search = $pos+$lword;
$string0 = substr($body_text, 0, $pos);
$string1 = substr($body_text,$pos,$lword);
$string2 = substr($body_text,$split_search,$length);
$body = $string0."<font style='color:#FF0000; background-color:white;'>".$string1." </font> ".$string2;
return $body;
} ?>
To jest bardzo prosty przykład, możesz po prostu skopiować wklej i zmienić zgodnie z wymogiem ur. –
twoje rozwiązania zawierają ten sam problem, o który pyta OP, podświetla tylko znaki pasujące do słowa kluczowego, a nie słowo zawierające znaki. –
<?php
$str = "my bird is funny";
$keyword = "fun";
$look = explode(' ',$str);
foreach($look as $find){
if(strpos($find, $keyword) !== false) {
if(!isset($highlight)){
$highlight[] = $find;
} else {
if(!in_array($find,$highlight)){
$highlight[] = $find;
}
}
}
}
if(isset($highlight)){
foreach($highlight as $replace){
$str = str_replace($replace,'<b>'.$replace.'</b>',$str);
}
}
echo $str;
?>
Użyj 'str_ireplace()' zamiast 'str_replace()', w którym nie jest rozróżniana wielkość liter 'str_replace()' –
tu jestem dodania wielu szukanie na sznurku celach
$keyword = ".in#.com#dot.com#1#2#3#4#5#6#7#8#9#one#two#three#four#five#Six#seven#eight#nine#ten#dot.in#dot in#";
$keyword = implode('|',explode('#',preg_quote($keyword)));
$str = "PHP is dot .com the amazon.in 123455454546 dot in scripting language of choice.";
$str = preg_replace("/($keyword)/i","<b>$0</b>",$str);
echo $str;
Dzięki Walery Strauch – Johnson
- 1. Jak zadeklarować pole formularza w Django, jeśli ma ono taką samą nazwę jak słowo kluczowe Python?
- 2. Go „to” -słowo kluczowe
- 3. JavaScript "argumenty" Słowo kluczowe
- 4. „jako” słowo kluczowe w SML
- 5. "Istnieje" słowo kluczowe w Pythonie?
- 6. Wielokrotne powtórzone słowo kluczowe "w"
- 7. Jak wymusić słowo kluczowe "zastąp"?
- 8. C# - Wyłącz dynamiczne słowo kluczowe
- 9. Co robi słowo kluczowe "var"?
- 10. Słowo kluczowe Spotting in Speech
- 11. Wykorzystaj nowe słowo kluczowe opcjonalnie
- 12. Słowo kluczowe "ref" i AppDomains
- 13. Co oznacza słowo kluczowe "natywna" w JavaScript?
- 14. Java dopasowuje całe słowo w łańcuchu
- 15. Słowo kluczowe "to" w klasach abstrakcyjnych
- 16. Jawne słowo kluczowe w konstruktorze multi-arg?
- 17. Wiążące słowo kluczowe odnosi się do czego?
- 18. Przeciwne słowo kluczowe "restrict" w C?
- 19. "dynamiczne" słowo kluczowe i dane JSON
- 20. Ulotne słowo kluczowe w Javie - wyjaśnienie
- 21. Co oznacza słowo kluczowe "i" w OCaml?
- 22. stanie zrozumieć nowe słowo kluczowe w java
- 23. Co robi słowo kluczowe dziedziczone w CSS?
- 24. użycie "to" słowo kluczowe w C++
- 25. Kiedy przekazać słowo kluczowe ref w
- 26. Słowo kluczowe (LUB, AND) szukaj w Lucene
- 27. Słowo kluczowe wyrzucania w sygnaturze funkcji
- 28. utworzyć słowo kluczowe w łączu automatycznie, globalnie
- 29. Kiedy słowo kluczowe "inline" działa w C?
- 30. wirtualne słowo kluczowe w języku C#
gratulacje, działa dziękuję – Simon
+1. Działa i szybka odpowiedź Dlaczego? we wzorcu? – sberry
@ sberry2A: Wyrażenia regularne PCRE są chciwy domyślnie Oznacza to, że kwantyfikator jest rozszerzany do maksymalnej możliwej liczby powtórzeń. '' 'powoduje, że kwantyfikator staje się nierównomierny, więc dopasowuje się możliwie najmniej powtórzeń. (Zobacz także http://www.regular-expressions.info/ repeat.html) – Gumbo