str_replace

0

Witam,
Zalozmy ze mam w bazie slowo 'Banan'. Teraz wpisujac w pole txt fraze 'banan na drzewie' przeszukuje mi rekordy. Chodzi mi o sama zamiane na inny kolor slowa 'banan' z tym ze w bazie kest z duzej litery a ja wpisuje z malej. Jak to wkryc i zamienic ? Samo str_replace zamieni ale musialbym podac z duzej litery. Nie chce tez zamieniac wszystkich liter z pola txt na male i z bazy na male bo w wyswietleniu beda tez male

0

Zasadniczo: użyj str_ireplace. I oznacza - ignore case czyli nie zwracaj uwagi na małe / wielkie litery.

echo str_ireplace("Banan", "Gruszka", "banan na drzewie");

// Gruszka na drzewie
0

Spróbuj uzyć funkcji z rodziny regexp tam masz ignorowanie rozmiaru liter (przełącznik i), np.:

https://www.php.net/manual/en/function.preg-replace.php

coś w stylu:

$txt = preg_replace( '/banan/ims', '<span style="color:red">banan</span>', $txt );

możesz także użyć back references: https://www.php.net/manual/en/regexp.reference.back-references.php do przechwycenia tego co zostało podmienione aby podmiana była z Banan na Banan, a nie z Banan na banan.

0

Dzieki za odpowiedzi ale slowo Banan zamieniane jest na małą litere. Docelowo ma byc wartosc zmiennej w postaci nienaruszonej czyli banan ma byc z duzej litery.

<?php

$str = 'Banan na drzewie';
$input = 'banan'; // to co wpisuje w input

print preg_replace( "/$input/ims", "<span style=\"color:red\">$input</span>", $str );

?>

<?php

$str = 'Banan na drzewie';
$input = 'banan';  // to co wpisuje w input

print str_ireplace( $input, "<span style=\"color:red\">$input</span>", $str );

?>

Wynikiem jest: 'banan na drzewie' a powinno byc: 'Banan na drzewie'

1

Pisałem Ci o backreferences ale chyba nie chciało Ci się za tym zapoznać, teraz to wszystko chcecie na tacy, no dobra niech będzie:

$str = 'Banan na drzewie';
$input = 'banan'; // to co wpisuje w input

print preg_replace( '/('.$input.')/ims', '<span style="color:red">\1</span>', $str );

1 użytkowników online, w tym zalogowanych: 0, gości: 1