Projekt

Obecné

Profil

Stáhnout (1.81 KB) Statistiky
| Větev: | Tag: | Revize:
1 6daefa8c Petr Lukašík
<?
2
3
$space_char = chr(216);
4
5
function follow_forbidden($znak) {
6
7
      $ignoruj=Array("[","]","⌈","⌉","&lt;D:&gt;","&lt;B:&gt;" );  //slova pro ignorovani
8
	  //echo "<br>follow_forbidden $znak : ";
9
10
	  for ($i=0; $i < sizeof($ignoruj); $i++) {
11
		//echo "<br><br>hledam {$ignoruj[$i]} ";
12
	    $is = true;
13
		for ($j=0; $j < min(strlen($ignoruj[$i]), strlen($znak)); $j++) {
14
		  //echo "<br> ".$znak{$j} ." = " . $ignoruj[$i]{$j} . " ??? "	;
15
	      if ($znak{$j} != $ignoruj[$i]{$j}) {
16
			$is = false;
17
			break;
18
		  }
19
		  //echo "ano";
20
	    }
21
		if ($is == true) return min(strlen($ignoruj[$i]), strlen($znak));
22
	  } 
23
      //echo "<br>";
24
	  return false;
25
}
26
27
function najdi_text($heslo, $str)
28
	{
29
30
	echo "<br><br>hledam $str v $heslo";	
31
	$poc_pos = 0;
32
	while (!(($poc_pos = StrPos($heslo, $str{0}, $poc_pos+1)) === false)) {
33
      echo "<br>start vnejsiho cyklu : poc_pos = $poc_pos";
34
	  $found = true;
35
	  for ($i = $poc_pos+1, $j = 1; ($i < strlen($heslo) && $j < strlen($str)); $i++) {
36
		echo "<br>start vnitrniho cyklu : i=$i, j=$j";
37
		if (!(($forbid = follow_forbidden(SubStr($heslo, $i))) === false)) {
38
            echo "<br>zacina zakazanym slovem, posun o forbid = $forbid znaku";
39
			$i += $forbid-1;
40
			continue;
41
		}
42
        echo "<br>nezacina zakazanym slovem, porovnavam 'str{j}' a 'heslo{i}' ".$str{$j}." ?= ".$heslo{$i};
43
44
		if ($str{$j} != $heslo{$i}) {
45
		  $found = false;
46
            echo "<br>znaky nejsou shodne, zaciname znovu";
47
		
48
		  break;
49
		}
50
	    $j++;
51
        echo "<br>znaky jsou shodne, porovnat dalsi znak";
52
53
	  }
54
	  if ($found == true && $j = strlen($str)) {
55
		echo "<br>slovo bylo nalezeno v textu";
56
	    return Array($poc_pos, $i-1);
57
	  }
58
	}
59
}
60
61
$heslo = "[x-x-x-x-o r]a-ka-sa-am aš-ta-n[a-pa-ra-kum]";
62
$str = "ra-ka";
63
64
$s = najdi_text($heslo, $str);
65
echo "<br><br>Hledany text zacina na znaku $s[0] a konci na $s[1]";
66
67
68
?>