2011-08-14 23 views
-2

iは、例えば、文字列よくある質問スクリプトのヘルプ

$str = "[H]Test[/H] My test string [H]Test2[/H] My second Test string"; 

を持っていると私は内部のリストを作りたい「[H]」と彼らは

<a href="#faq-1">Test</a> 
<a href="#faq-2">Test2</a> 

のようなことをクリックしますとともにしたいです

+0

正規表現を使用するのに適した場所 – Ibu

+0

ここで質問する前に、いくつかの検索を行うことを検討してください。 –

+0

私は本当に理解できません。同じ場所にリンクしている[H]タグの中にリストを作りたいですか?テキスト内の要素にリンクする別のリストが必要なのではないでしょうか。 – kjetilh

答えて

1
この $str

<a name="faq-1"></a>Test 
<a name="faq-2"></a>Test2 

任意のヘルプをしてください含めます

ここに私が思いついたことがあります。

<?php 

$str = "[H]Test[/H] My test string [H]Test2[/H] My second Test string"; 

/** 
* Helper class 
*/ 
class FaqHelper { 
    static $count = 1; 
    static $listItems = array(); 
    static $prefix = 'faq-'; 

    static function GetList() { 

     $items = ''; 
      foreach (self::$listItems as $id => $label) { 
       $items .= '<li><a href="#' . self::$prefix . $id .'">' . $label . '</a></li>'; 
      } 

     return '<ul>'. $items .'</ul>'; 
    } 

    static function ReplaceCallback($matches) 
    { 
     $id = self::$count; 
     $label = $matches[1]; 

     self::$listItems[$id] = $label; 

     $res = '<span id="'. self::$prefix . $id .'">' . $label . '</span>'; 

     self::$count++; 

     return $res; 
    } 
} 

$text = preg_replace_callback(
    "#\[H\]([^\[]+)\[/H\]#", 
    array('FaqHelper', "ReplaceCallback"), 
    $str 
); 

$list = FaqHelper::GetList(); 

echo $list; 
echo '<br /><br />'; 
echo $text; 

?> 
+0

ありがとうございます。 – Hafiz

+0

np。スニペットを更新し、FaqHelperクラスの中でpreg_replace_callbackを移動して、クラス内の機能をさらにカプセル化しました。それがあなたの質問に答えた場合は、回答を回答としてマークしてください。 – kjetilh

+0

kjetilhこのコメントもお読みください http://stackoverflow.com/questions/7061578/ph​​p-list-of-contents – Hafiz

関連する問題