У меня есть набор данных, который я ищу наверняка Символы МФА. Я хотел бы ограничить область поиска в соответствии со значением $, показанным в приведенном ниже коде, но не знаю как. РЕДАКТИРОВАТЬ: Где $ где это «начало», «ядрои» и «коде». Кто-нибудь знает, как ограничить поисковый домен? (Код ниже написан на php, но этот файл связан с файлом HTML, который человек может использовать для поиска символов IPA в наборе данных.) РЕДАКТИРОВАТЬ: см. Добавленный код в нижней части.
//set up variables
$words = $table[0]; //row 1 of table
$target = $table[1]; //row 2
$indices = array(); //used to store column numbers
$IPAstr = $_POST["ipa"];
$where = $_POST["where"];
//Find $IPAstr in $target
for($i=1; $i<count($target); $i++)
{
if (mb_strpos($target[$i],$IPAstr) !== false)
$indices[] = $i;
}
//List realizations & count frequency
for($i=0; $i<count($indices); $i++)
{
$index = $indices[$i];
$ipalist = array();
echo "<table border=1><tr><td>".$target[$index]." in " . $words[$index]."</td></tr><td>";
//output each speaker and count frequency
for ($j=2; $j<count($table); $j++) {
echo ($j-1).": ".$table[$j][$index]."<br>";
$ipalist[$table[$j][$index]]++;
}
echo "<br>";
//output frequency list
foreach($ipalist as $ipa=>$fre)
echo "$ipa: $fre<br>";
echo "</td></tr></table>";
}
//Code to help search for "onset" "nuclei" and "coda"//list onsets only
echo "Onsets only<br>";
for($col=0; $col<count($table[0]); $col++) {
$s = $table[0][$col];
if (whichSyllPart($s) == 'o') echo "$s ";
}
//list nuclei only
echo "Nuclei only<br>";
for($col=0; $col<count($table[0]); $col++) {
$s = $table[0][$col];
if (whichSyllPart($s) == 'n') echo "$s ";
}
//list codas only
echo "Codas only<br>";
for($col=0; $col<count($table[0]); $col++) {
$s = $table[0][$col];
if (whichSyllPart($s) == 'c') echo "$s ";
}
Чтобы ограничить область поиска, вам необходимо ввести следующий код в разделе «// Find $ IPAstr in $ target» кода.
//Find $IPAstr in $target
for($i=1; $i<count($target); $i++)
{
if ($where == whichSyllPart($words[$i])){
if (mb_strpos($target[$i],$IPAstr) !== false)
$indices[] = $i;
}
else if ($where == "everywhere"){
if (mb_strpos($target[$i],$IPAstr) !== false)
$indices[] = $i;
}
}
Для этого вам нужна функция whichSyllPart ()
function whichSyllPart($sy)
{
$pt = $sy[strlen($sy)-1];
return($pt);
}
Это добавляет оператор if / else if, включающий функцию whichSyllPart (), которая ограничивает поиск в соответствии со значением $ where.
Других решений пока нет …