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
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
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.
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'
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 );