0

この正規表現を使用し|title|Page title|て、タイトルタグをからに置き換えようとしています。<title>Page Title</title>しかし、完全なアマチュアであるため、うまくいきません。

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

私はそれを修正する方法、そしてもっと重要なことに、私が何を間違えたのか、そしてなぜそれが間違っていたのかを知りたいです。

4

3 に答える 3

1

あなたはほとんどそれを手に入れました:

  • あなたは脱出する必要があります| 正規表現で特別な意味を持ち、プレーン文字として使用しているため、文字。
  • 検索グループにスペース文字を追加する必要があります

    $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>
    

作業デモを見る

OPは間違ったコメントにいくつかのコードを投稿しました。このバージョンを試してください:

$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); 
} 
于 2013-03-18T20:08:56.720 に答える
0
<?php
    $s = "|title|Page title|";

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

    echo $s;
?>
于 2013-03-18T20:09:20.467 に答える
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));
于 2013-03-18T19:59:24.110 に答える