Я пытаюсь опубликовать имя файла изображения из формы на той же странице php. Я хочу, чтобы код php затем искал изображение с похожим названием и показывал его на странице. проблема в том, что если моя поисковая строка не является подстрокой имени файла, мой поиск не даст результатов, например: для Mango.jpg, если я ищу «mango», я не получу вывод. Есть ли другая альтернатива для реализации этой функциональности.
<?php
if (isset($_POST['picname'])){
$picname=$_POST['picname'];
$string =array();
$filePath='images/';
$dir = opendir($filePath);
while ($file = readdir($dir)) {
if (preg_match("/.png/",$file) || preg_match("/.jpg/",$file) || preg_match("/.gif/",$file) ) {
$string[] = $file;
}
}
while (sizeof($string) != 0){
$img = array_pop($string);
$pos = strpos($img,$picname);
echo $img;
if($pos === false) {
echo "";
}else{
echo "<img src='$filePath$img' width='100px' >";
}
}
}
?>
<html>
<head>
<title>getting pics</title>
</head>
<body>
<h1>Enter a product to search</h1>
<form action="<?php print $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="picname" />
<input type="submit" value="Go!" />
</form>
попробуй с примерное сравнение строк
вместо поиска точной совпадающей подстроки создайте метрику строки и систему оценки. Присвойте +1 для каждой подходящей буквы в имени файла, присвойте +2 для каждой подходящей двухбуквенной строки и т. Д. Назначьте + N для всей подходящей подстроки. В итоге вы получите значение оценки для каждого имени файла, отсортируйте список и возьмите первые 10, например.
Попробуйте использовать file_exists()
работать с той же техникой, которую вы использовали, объединяя расширения.
Другое решение будет использовать
$result = glob ("./uploads/filename.*");
Пытаться:
$pos = stripos($img,$picname);