2012-08-31 6 views
0

페이지 당 설명 및 키워드를 만드는 방법을 알아 내려고하고 있습니다.PHP 제목, 설명 및 키워드 페이지 당

타이틀은 다음과 같습니다에 대한 설명

{{title=some page title in here}} 

, 나는 이런 식으로 뭔가 할 것 :

는 또한
{{description=some description per page in here}} 

키워드 메타 태그, 나는 같은 것을 할 것을 :

{{keywords=example keyword, per each page, this is an example}} 

어떻게 preg_replace + regex 파싱을 사용하면 페이지에서 볼 수 없게 될까요? 그것은 자기 만 같은 실제 메타 정보에 배치 :

<title> some page title in here </title> 
<meta name="description" content="some description per page in here"> 
<meta name="keywords" content="example keyword, per each page, this is an example"> 

페이지의 예는 다음과 같이 보일 것이다 :

{{title=some page title in here}} 
{{description=some description per page in here}} 
{{keywords=example keyword, per each page, this is an example}} 

<div id="content"> 
    <h4> Some page title here </h4> 
    <p> Some page paragraphs here. </p> 
</div> <!--#content--> 

물론 결과의

이에 시뮬 것 :

<html> 
<head> 
    <title> Website Title - some page title in here </title> 
    <meta name="description" content="some description per page in here"> 
    <meta name="keywords" content="example keyword, per each page, this is an example"> 
</head> 
<body> 
    <div id="content"> 
    <h4> Some page title here </h4> 
    <p> Some page paragraphs here. </p> 
    </div> <!--#content--> 
</body> 
</html> 

도움을 많이 주셔서 감사합니다. 페이지 제목은 이전 스크립트에 설정되어있는

<title><?php echo $page_title; ?></title> 

+0

이 더 나은 것 모든 남아있는 HTML을 가지고 이런 식의 솔루션 ... – Charlie

+0

나는 당신의 목표를 잘 모르겠다. 정교하게 주시겠습니까? –

+0

정규식은 {{제목 = 여기에 일부 페이지 제목}}이고 {{설명 = 페이지 당 몇 가지 설명은 여기}} 이고 {{keyword = 예제 키워드, 각 페이지마다 예}}}에서 이 구문 분석을 수행하십시오 – Tux

답변

0

, 당신은 같은 것을 포함 할 . 이 같은 배열에서 페이지의 메타 데이터 유무 :

$meta["title"] = "Title"; 
$meta["description"] = "Description of the Page"; 
$meta["keywords"] = "Keywords, SEO"; 

출력 세 이런 식으로 :

/(?<=\{\{TAG_NAME=).*?(?=\}\})/ 

변수 태그를 일치 시키려면 :

<title><?php echo $meta["title"]; ?></title> 
<meta name="description" content="<?php echo $meta["description"]; ?>"> 
<meta name="keywords" content="<?php echo $meta["keywords"]; ?>"> 
+0

아니요 작동하지 않습니다. 나는 {{제목 = 여기에 어떤 제목}}이 필요합니다. – Tux

+0

이유가 있습니까? preg_replace_callback()을 사용할 수 있습니까? –

+0

예 모든 preg 실제로 prefer =) 내 자신의 파서를 코딩하고 위의 예제에 대한 정규식 알아 내려고 노력하고있어. – Tux

0

당신은이 작업을 수행 할 regex 필요하지 않습니다 :이 권리를 읽고 있어요 경우

+0

다시 말하지만,이 실제 작업은 preg_replace + 정규식이 필요합니다. {{title = 여기서는 일부 제목}} 위 예제에서 보았 듯이 사용할 수 있습니다. – Tux

+0

HTML과 PHP 코드를 보여줄 수 있습니까? –

+0

여기에 함수가 있습니다.> http://pastebin.com/85qqBSHk – Tux

0

가 주어진 태그를 일치 시키려면 :

/\{\{(\w*?)=(.*?)\}\}/ 

그런 다음, 첫 번째 submatch는 태그 이름을, 두 번째는 값을 줄 것입니다. 공백을 고려하려면 :

/\{\{\s*(\w*?)\s*=\s*(.*?)\s*\}\}/ 

... 태그 안에 '}}'을 사용하지 않는 한.

틈 아래로 :

\{\{ 

매치이 열린 중괄호. 쉬운. ({정규 표현식에서 특수 문자이므로 {escape}해야합니다.

\s* 

가능한 한 많은 공백을 매치십시오.정규식을 중단하지 않습니다

(\w*?) 

일치하는 짧은 단어 문자의 문자열 (A-ZA-Z0-9 및 밑줄). 괄호는 여기에 일치하는 항목을 하위 일치 항목으로 반환합니다.

\s*=\s* 

정확히 하나가 정규식을 중단하지 않습니다 모든 문자의

(.*?) 

일치 짧은 세트에 서명 같습니다 더 많은 공백을 중얼 및 제 2 서브 일치로 돌아갑니다.

\s*\}\} 

공백과 닫는 중괄호 (다시 이스케이프 처리됨)를 중얼 거릴 수 있습니다. 당신이 경우에

그래서 :

$regex = '/\{\{\s*(\w*?)\s*=\s*(.*?)\s*\}\}/' 
preg_match_all($regex, $html, $matches) 
$html = preg_replace($regex, '', $html) 

을 다음 $matches[1]는 모든 태그 이름을 가지고 있으며, $matches[2]는 모든 값을 가지고 있으며, $html 내가 jQuery를 같은 느낌

관련 문제