2013-03-18 2 views
0

|title|Page title|에서 <title>Page Title</title>까지 제목 태그를이 정규식을 사용하여 바꿀려고합니다. 그러나 완전한 아마추어되고,PHP 제목 정규 표현식

'^|title|^[a-zA-Z0-9_]{1,}|$' => '<title>$1</title>' 

나는 그것을 해결하는 방법을 알고 싶어요 .. 잘에 갔다 아니에요, 그리고 더 중요한 것은 무슨 내가 잘못했던 이유였다.

+4

귀하의 캐릭터 그룹 doesn 공간이 없습니까? –

+3

당신은 그냥'explode ('|', $ string)' – Tchoupi

+0

공간 없이도 작동하지 않습니다. 필자는 정확한 웹 서버에서 "test"를 사용했고, 그걸 삼키지도 않았습니다. 내 얼굴에 이런 오류가 계속 나타납니다 : 경고 : preg_replace() [function.preg-replace] : 일치하는 구분 기호 '>'가 D : \ www \ core \ classes \ system.class.php 온라인에 없습니다. 37 바로이 같은 내 시스템 클래스에 삽입하려고 할 때까지 최대 작동 – Hultin

답변

1

당신은 거의 그것을 가지고 :

  • 당신은 탈출해야한다 | 문자를 정규식으로 정규 표현식에서 특별한 의미를 가지므로 일반 문자로 사용하고 있습니다.

    $regular_expressions = array(array('/\|title\|([a-zA-Z0-9_ ]{1,})\|/' , '<title>$1</title>')); 
    foreach($regular_expressions as $regexp){ 
        $data = preg_replace($regexp[0], $regexp[1], $data); 
    } 
    
    :
  • 당신은

    $string = '|title|Page title|'; 
    $pattern = '/\|title\|([a-zA-Z0-9_ ]{1,})\|/'; 
    $replacement = '<title>$1</title>'; 
    echo preg_replace($pattern, $replacement, $string); //echoes <title>Page title</title> 
    

demo

영업 이익은 잘못된 의견에 일부 코드를 게시 작업을 참조하십시오 검색 그룹에 공백 문자를 추가해야합니다,이 버전을 사용해

+0

: \t 공공 기능 render_template_basic ($ 데이터) { \t \t $ 데이터 = ($ 데이터) 트림; \t \t $ regular_expressions = 배열 ​​( \t \t \t '/ \ | 표제 \ | ([A-ZA-Z0-9_] {1}) \/|'=> ' $ 1' \t \t) ; \t \t의 foreach ($의 정규 표현식은 $ regular_expressions) {$ 데이터 = preg_replace이다 ($ 정규 표현식이 [0], $ 정규 표현식이 [1], $ 데이터) \t \t \t; \t \t} \t \t return $ data; \t} 그런 다음 "경고 : preg_replace() [function.preg-replace] : 구분 기호는 36 행의 D : \ www \ core \ classes \ system.class.php에 영숫자 또는 백 슬래시가 있어서는 안됩니다."오류 – Hultin

+0

더블 포스트 죄송합니다. 표시되는 이전 메모를 편집 할 수 없습니다. $ regexp [0]을 출력하면 "<"가 출력되고 $ regexp [1]을 출력하면 "t"가 출력됩니다. 나는이 성질의 문제를 결코 경험하지 못했습니다. 뭔가 이상한 일이 일어나기 때문에 이상합니다. – Hultin

+0

내가 뭘 잘못하고 있는지 알 수 있고, 내 대답에 그것을 추가 할 것입니다 .. – Nelson

0

작은 기능 나는 사용자가 내 서비스를 통해 링크를 제출할 때 페이지의 제목을 근본적으로 긁어 모으기 위해 잠시 생각해 냈습니다. 이 기능이 제공하는 기능은 제공된 URL의 내용을 가져옵니다. 제목 태그를 찾으면 찾을 수 있습니다. 제목 태그 사이에 무엇이 있는지 알아 내고 그 결과를 덤프하십시오. 약간의 조정을하면 무엇을 하던지 바꾸기 방법을 사용할 수 있고 필요에 맞게 작동 할 수 있다고 확신합니다. 따라서 이것은 대답이 아닌 출발점에 가깝지만 전반적으로 도움이되기를 바랍니다.

$url = 'http://www.chrishacia.com'; 
function get_page_title($url){ 

    if(!($data = file_get_contents($url))) return false; 
    if(preg_match("#<title>(.+)<\/title>#iU", $data, $t)) { 
     return trim($t[1]); 
    } else { 
     return false; 
    } 
} 
var_dump(get_page_title($url)); 
0
<?php 
    $s = "|title|Page title|"; 

    $s = preg_replace('/^\|title\|([^\|]+)\|/', "<title>$1</title>", $s); 

    echo $s; 
?>