2016-08-15 2 views
-3

Я новичок в регулярном выражении, но у меня нет времени прямо сейчас, чтобы узнать его, еще мне нужно преобразовать eregi ("^ ..? $", $ File) в preg_match(), но я не ' Знаешь, как это сделать, может кто-нибудь мне помочь?Преобразование PHP eregi в preg_match, как это сделать?

также дает мне немного понимания того, как она работает также будет приятно иметь :)

кусок кода:

$fileCount = 0; 
while ($file = readdir($dh) and $fileCount < 5){ 
    if (eregi("^..?$", $file)) { 
     continue; 
    } 
    $open = "./xml/".$file; 
    $xml = domxml_open_file($open); 

    //we need to pull out all the things from this file that we will need to 
    //build our links 
    $root = $xml->root(); 
    $stat_array = $root->get_elements_by_tagname("status"); 
    $status = extractText($stat_array); 

    $ab_array = $root->get_elements_by_tagname("abstract"); 
    $abstract = extractText($ab_array); 

    $h_array = $root->get_elements_by_tagname("headline"); 
    $headline = extractText($h_array); 

    if ($status != "live"){ 
     continue; 
    } 
    echo "<tr valign=top><td>"; 
    echo "<a href=\"showArticle.php?file=".$file . "\">".$headline . "</a><br>"; 
    echo $abstract; 
    echo "</td></tr>"; 

    $fileCount++; 
} 
+0

Возможно, вам понадобится время, возможно, у нас не будет никаких запасных – RiggsFolly

+0

Быстрый взгляд на Stack выявит других, которые задали один и тот же вопрос, возможно, это может помочь http://stackoverflow.com/questions/2501494/how-to-convert-eregi-to-preg-match? rq = 1 – RamRaider

+0

Вместо того, чтобы ждать, пока кто-то напишет вам код, лучше начать изучение регулярного выражения. Это довольно просто. – lorond

ответ

0

Изменение eregi("^..?$", $file) в preg_match("/^\.\.?$/i", $file)

В eregi вы не нужно было открывать и закрывать регулярные выражения, но с помощью preg вы должны (эти две слэши начинаются и заканчиваются).

В основном это регулярное выражение соответствует всем именам файлов, которые начинаются с. и заканчивается там или есть другое. и затем заканчивается там, поэтому он будет соответствовать файлам . и ..

Чем быстрее способ сделать это, как этот

$fileCount = 0; 
while ($file = readdir($dh) and $fileCount < 5){ 
    if($file != "." && $file != "..") { 
     $open = "./xml/".$file; 
     $xml = domxml_open_file($open); 

     //we need to pull out all the things from this file that we will need to 
     //build our links 
     $root = $xml->root(); 
     $stat_array = $root->get_elements_by_tagname("status"); 
     $status = extractText($stat_array); 

     $ab_array = $root->get_elements_by_tagname("abstract"); 
     $abstract = extractText($ab_array); 

     $h_array = $root->get_elements_by_tagname("headline"); 
     $headline = extractText($h_array); 

     if ($status != "live"){ 
      continue; 
     } 
     echo "<tr valign=top><td>"; 
     echo "<a href=\"showArticle.php?file=".$file . "\">".$headline . "</a><br>"; 
     echo $abstract; 
     echo "</td></tr>"; 

     $fileCount++; 
    } 
} 

Вы хотите, чтобы попытаться избежать использования continue и break заявления, так как они плохо для хорошей структуры кода, потому что вы не имеют ясное представление о том, почему они там, когда вы смотрите на код.

0

преобразованный preg_match может выглядеть следующим образом.

if (preg_match("/\^|\.\.|\?|\$.*/", $file)) { 
    continue; 
} 

PS: Я использую для регулярного анализа этот сайт. https://regex101.com/

Смежные вопросы