PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Stringi see otsimine
Postitaja: mcklapp 2013-11-06 22:22:01
Oletame mul on string

String
Kes see kolgib ukse taga,
nad öösel kah ei maga.
Kes näod on musta värvi taga,
vaikselt ajavad sind närvi.
Igal aastal tulevad,
Kes ukse taga munevad taga.
Seljas katkised riided neil,
Kes lõpuks saime aru kes ukse taga meil.

See kood mis all saab kätte Kes ja taga, aga järgmisel whilil saab need samad kätte, et ta läheks edasi sealt kust pooleli jäi.
Vaja nüüd nii, et kõik mis on Kes ja taga vahel väljastaks.

Hetkel on selline kood


PHP kood:
 
<?php
function get_string_between($string$start$end){
    
$string " ".$string;
    
$ini strpos($string,$start);
    if (
$ini == 0) return "";
    
$ini += strlen($start);
    
$len strpos($string,$end,$ini) - $ini;
    return 
substr($string,$ini,$len);
}
$fullstring "
Kes see kolgib ukse taga,
nad öösel kah ei maga.
Kes näod on musta värvi taga,
vaikselt ajavad sind närvi.
Igal aastal tulevad,
Kes ukse taga munevad taga.
Seljas katkised riided neil,
Kes lõpuks saime aru kes ukse taga meil. 
"
;


$pealkiri get_string_between($fullstring'Kas''taga');


echo 
"<table>";
$jrk 1;

while(
$jrk 50) {

$peal[$jrk] = $pealkiri;

$jrk $jrk 1;
}

$arv 1;
while(
$arv 50) {
echo 
"<tr>";
echo 
"<td>".$peal[$arv]."</td>";
echo 
"</tr>";

$arv $arv 1;
}
echo 
"</table>";
?>


Loodan on arusaadav !
RE: Stringi see otsimine
Postitaja: kas 2013-11-06 23:54:13

PHP kood:
 
$fullstring 
"Kes see kolgib ukse taga, 
nad öösel kah ei maga. 
Kes näod on musta värvi taga, 
vaikselt ajavad sind närvi. 
Igal aastal tulevad, 
Kes ukse taga munevad taga. 
Seljas katkised riided neil, 
Kes lõpuks saime aru kes ukse taga meil.  
"
;
$fullstring strtolower($fullstring);
$out str_replace('kes''*'$fullstring);
$out str_replace('taga''#'$out);

    function 
leia($out$leia){
         global 
$leia;
        
$st1 strpos($out,'*');
        
$st2 strpos($out,'#');
        
        
$nw substr($out,$st1+1,$st2-$st1-1);
        
$nw str_replace('#','taga'$nw);
        
$nw str_replace('*','kes'$nw);
    
            if((
$st1 or $st2) and $nw!=''){$leia=$leia.' <br> '.$nw;}
    
        
$fix substr($out,$st2+1,strlen($out));
    
            if(
$st1 or $st2){leia($fix,$leia);}
        return 
$leia;
    }

$leia ='';
echo 
leia($out,$leia);
RE: Stringi see otsimine
Postitaja: kas 2013-11-06 23:57:37
See leiab kõik "kes" ... "taga" vahel asuvad sõnad, kui on kaks korda "kes" või "taga" järjest või "taga" eespool, siis neid ei otsita.
RE: Stringi see otsimine
Postitaja: mcklapp 2013-11-07 00:01:32
Testisin, jah väga hea. Võimalik läheb teie oma käiku.

Kuigi googeldasin just sellise välja
http://www.tutorialspoint.com/php/php_preg_match_all.htm

PHP kood:
 
<?php

$userinfo 
"Name: <b>John Poul</b> <br> Title: <b>PHP Guru</b>";
preg_match_all ("/<b>(.*)<\/b>/U"$userinfo$pat_array);
print 
$pat_array[0][0]." <br> ".$pat_array[0][1]."\n";

?>


RE: Stringi see otsimine
Postitaja: blaa 2013-11-07 00:04:54
vabandused, et nii lühidalt, aga...
preg_match_all('/kes (.*) taga/iUsm', $fullstring, $matches);
print_r($matches);
RE: Stringi see otsimine
Postitaja: mcklapp 2013-11-07 00:06:37
Panin suurema faili külge ja vot nii

$fullstring = file_get_contents('testfail.html');

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2987079 bytes) in .../otsi/test.php on line 16
RE: Stringi see otsimine
Postitaja: blaa 2013-11-07 00:08:16
php.ini
otsi "max"
RE: Stringi see otsimine
Postitaja: blaa 2013-11-07 00:09:48
ja muidugi preg_ ei saa sellise pika stringiga hakkama, kasuta fopen-it ja loe ridahaaval seda faili
RE: Stringi see otsimine
Postitaja: mcklapp 2013-11-07 00:11:45
Mis vahe on sellel preg_match_all-il u ja iUsm vahel ?
RE: Stringi see otsimine
Postitaja: blaa 2013-11-07 12:22:56

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0867409706116