2011-02-24 9 views
1

필자는 파일 시스템을 재귀 적으로 살펴보고 필요할 때 파일의 시작을 연 다음 태그 사이의 텍스트를 찾습니다. 설정 같은 때 그것은 ...PHP 내부에서 PHP 로직이있는 태그 사이의 preg_match

<title>Page Title | Company, Inc.</title> 

근무하지만 지금은 주름을 추가하고 관리 도구를 통해 제목과 메타 정보를 관리하는 방법을 설정했습니다. 이런 경우에 무엇인가가 나는 이전의 기본 제목 정보로 후퇴 할, 입력하지,하지만 내는 preg_match는

<title><[email protected]$page_meta_array['page_title']!=''?$page_meta_array['page_title']:"Default Title Here";?> | Company, Inc.</title> 

나는 외모에 페이지를 통과 PHP 함수 ...이 작동하지 않습니다 이런 ...

function get_title($filename) { 
    $retval = ""; 
    $handle = fopen($filename, "r"); 
    $head = fread($handle, 4096); 
    preg_match(";<title>(.+)</title>;", $head, $matches); 
    if(sizeof($matches) == 2) { 
     $retval = trim($matches[1]); 
    } 
    fclose($handle); 

    return $retval; 
} 

누군가가 정확한 preg_match를 가리킬 수 있습니까? 위의 두 번째 예제에서 "Default Title Here"를 반환하고 싶습니다.

감사

답변

0

이 그것을 할 수 있습니다 짧은 태그는 사용되지 않으며, 및 PHP6에서 작동하지 않을 수

preg_match(';<title><\?[^>]*"([^"]*)"[^>]*></title>;', $head, $matches); 

참고.

+0

짧은 태그 구문에 대한 도움말과 팁을 보내 주셔서 감사합니다. 변수를 표시 할 때마다 에 익숙해 져야합니다. 그거 끔찍해. 문제가 발생하지만 더 나은 방법을 구현할 수 있다고 확신합니다 ... 아마 심지어 코드를 XML로 사용하고 있습니까? – Don

0

먼저 PHP 코드를 구문 분석 한 다음 일치하는지 확인해야합니다. 왜 그냥 $ page_meta_array [ 'page_title']의 내용을 사용하지 않으시겠습니까?

+0

배열 값이 설정된 경우이를 사용합니다. 가벼운 관리 도구를 만들어 각 페이지에 제목/메타 desc/메타 키워드를 설정할 수 있도록합니다. 정적으로 사용되었거나 설정되지 않은 데이터는 페이지 수 있습니다. DB에서 새로운 데이터를 가져 오기위한 코드를 입력하면 Don