메뉴 건너뛰기

프로그램언어

조회 수 4091 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

글 속에서 링크만을 추출하고

추출한 링크 속에서 어떤 패턴 여러 경우를 골라내려고 합니다.

예를 들어 링크된 파일의 종류, 링크 속의 속성 (title, class, onmouseover등등)이 내가 원하는 것들과 매치가 되는지 검색을 하고 매치가 되거나 안 되거나만 가려내려고 합니다.

 

이때 eregi가 빠를까요. strpos가 빠를까요?

 if (eregi('','')) {} 
if (strpos('','') !== false) {}
검색어와 매치를 시킬 때 1번이 빠른가요 2번이 빠른가요?

 $cut_data[0] = '.png';
 $cut_data[1] = '.gif';
 $cut_data[2] = '.jpg';   for($i=0; $i < $for_cnt; $i++) {} 
$anchor_rel = array('.png','.gif','.jpg');   foreach ($anchor_rel as $example) {}
아니면 더 효율적인 방법이 있을까요?

 

---------------------------------------------------------------------------------------

 

 

strpos가 더빠릅니다.


eregi같은경우에는. 느리기로 소문난 함수중에 하나입니다.(ereg_replace,ereg같은함수 )

$str ="124999aggg";

if(eregi("[0-9]",$str))

이와 같이 정규식을 쓸수 있기에.. 정규표현식을 패턴을 검사하가위해..

당연히 단순히 문자를 검색하는 strpos보다 더느릴수 밖에없읍니다.


두번째질문은 밑에 테스트한결과로 보여드리겠습니다

for($j = 0 ; $j <5 ; $j++)
{

$arr = range(1,10000000);
$time =getmicrotime();
$cnt = sizeof($arr);
for($i =0 ; $i < $cnt ; $i++){}
print getmicrotime()-$time;
print " : for";
print "\n";
print "\n";
$time =getmicrotime();
foreach($arr as $v){}
print getmicrotime()-$time;
print " : foreach";
print "\n";
print "\n";
}
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
결과는


2.57946896553 : for

9.61373019218 : foreach

2.59991693497 : for

21.459086895 : foreach

2.67453289032 : for

12.387665987 : foreach

2.61338496208 : for

10.5894870758 : foreach

2.70486783981 : for

10.1344602108 : foreach
입니다.

위의 속도 계산을 보셧듯이..

for가 아무래도.속도는 더 빠릅니다.

하지만 foreach의 확장성이나 특성을.. 개인적으로 더좋아하기에 ..

foreach를 추천하고싶군요..


더낳은 방법이라면.. 데이타에서. 하나하나 찾는거보다. 전체를 한꺼번에

찾는 방법이 있긴합니다. 아주유용한 함수가 있습니다.

preg_match_all 함수가 있습니다.

글에서.. 정규식에 맞는 글자들을 전역적으로 뽑아서 변수에 저장시켜줍니다.

사용예입니다.

$url = "http://test.com";
$text=@file_get_contents($url);
if ($text)
{
$src_href_url=run_preg($text,
"/(?:(?:src|href|url)\\s*[=\\(]\\s*[\\"'`])".
"([\\+\\w:?=@&\\/#._;-]+)(?:[\\s\\"'`])/i");
$windows=run_preg($text,
"/(?:window.open\\s*\\(\\s*[\\w-]*\\s*[,]\\s*[\\"`'])".
"([\\+\\w:?=@&\\/#._;-]*)(?:[\\"'`]\\s*)/i");
}

function run_preg($text,$pattern) {

preg_match_all ($pattern, $text, $matches);

if (count($matches)>0)
if (count($matches[1])>0)
foreach ($matches[1] as $k => $v)
echo "$k: $v\\n";

return (is_array($matches)) ? $matches[1]:FALSE;
}

 


List of Articles
번호 제목 날짜 조회 수
220 배열을 테이블로 만들기 2019.01.08 1625
219 공백문자 체크 2019.01.08 1625
218 이미지 사이즈 비율로 조정하기 2019.01.08 1629
217 php에서 체크박스 선택한 것 보여주기 file 2019.01.08 1807
216 dddotag - 허용하지 않는 태그 걸러내기 2019.01.16 1850
215 금액 단위를 만단위부터 표시하는방법 2019.01.16 1912
214 PHP 외부 XML 파싱 하기 2019.06.24 1944
213 메모장소스 2019.01.08 2000
212 PHP http 를 https 로 전환(redirect), http->https 2019.02.19 2183
211 날짜/시간함수 정리 2018.08.29 2429
210 PHP에서 자료, 데이터의 타입을 확인하는 방법, gettype() 2018.08.29 2465
209 PHP에서 모든 세션 정보를 화면에 출력하는 방법 2018.08.29 2694
208 자바스크립트 이스케이프 문자열을 PHP로 디코딩 하기 2018.10.27 3259
207 PHP 소켓을 이용하여 URL의 응답결과를 문자열로 받기 2018.10.27 3502
206 PHP split()와 explode()의 차이점 2018.10.27 3536
205 PHP 문자열에서 검색어를 기준으로 앞뒤로 일정 길이만큼 자르기 2018.10.27 3539
204 PHP에서의 대칭 암호화/복호화 ― 간단한 예제에서 DB 입/출력까지 2018.09.14 3548
203 PHP XML 문서파싱 (SAX 방식 , DOM 방식) file 2018.10.27 3585
202 PHP 확장 모듈을 이용한 C 라이브러리 사용 2018.10.27 3786
201 한글이 깨져서 나올 때 - iconv 2018.08.29 3933
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved