: 정규 표현식에 관한 질문입니다.
:
: 문자열중 가장 마지막 "/" 부터 나머지 문자열은 모두 삭제하고 출력하는 방
: 법은 없나입니다.
:
: 예를 들어 /aaa/bbb/ccc 라는 문자열이 있을 때 /aaa/bbb 라고 반환하게 만
: 드는 정규 표현식이 궁금합니다.
<?
$directory = "/aaa/bbb/ccc";
$startTime1 = microtime();
$reversedOriginString = strrev($directory);
$reversedString = strstr($reversedOriginString, "/");
$resultString = substr(strrev($reversedString),0,-1);
$endTime1 = microtime();
$processingTime1 = get_microtime($startTime1, $endTime1);
echo "
method 1: using String functions
<ul>
origin : $directory<br>
stage1 : $reversedOriginString<br>
stage2 : $reversedString<br>
result : $resultString<br>
processing time = $processingTime1;
</ul>
";
$startTime2 = microtime();
$resultString = eregi_replace("(/.[^/]*)$","",$directory);
$endTime2 = microtime();
$processingTime2 = get_microtime($startTime2,$endTime2);
echo "
method2 : using eregi_replace
<ul>
origin : $directory<br>
result : $resultString<br>
processing time = $processingTime2
</ul>
";
$differenceTime = sprintf("%.10f",$processingTime1 - $processingTime2);
$absTime = $differenceTime;
if($differenceTime<0) $absTime = sprintf("%.10f",$differenceTime*(-1));
echo "
comparision of processing time :
<ul>
method1 : $processingTime1<br>
method2 : $processingTime2<br>
";
if($differenceTime<0) $compareString = "method2 is slower than method1 (". $absTime . ")";
else if($differenceTime == 0) $compareString = "method1 is equals to method2";
else $compareString = "method1 is slower than method2 (". $absTime. ")";
echo "
$compareString
</ul>
";
#적수게시판 함수참조
function get_microtime($start, $end) {
# 주어진 문자열을 나눔 (sec, msec으로 나누어짐)
$start = explode(" ", $start);
$end = explode(" ", $end);
$time[msec] = $end[0] - $start[0];
$time[sec] = $end[1] - $start[1];
if($time[msec] < 0) {
$time[msec] = 1.0 + $time[msec];
$time[sec]--;
}
$term = sprintf("%.10f", $time[sec] + $time[msec]);
return $term;
}
?>
저의 컴퓨터에서의 결과는 다음과 같았습니다.
method 1: using String functions
origin : /aaa/bbb/ccc
stage1 : ccc/bbb/aaa/
stage2 : /bbb/aaa/
result : /aaa/bbb
processing time = 0.0000860000;
method2 : using eregi_replace
origin : /aaa/bbb/ccc
result : /aaa/bbb
processing time = 0.0001170000
comparision of processing time :
method1 : 0.0000860000
method2 : 0.0001170000
method2 is slower than method1 (0.0000310000)--외로워라 이네몸은 뉘와함께 놀아날꼬.