{{存命人物の出典明記|date=2011-11}}
{{基礎情報 皇族・貴族
| 人名 = 徳仁親王
| お印 = [[アズサ|梓]]{{日本の皇室}}
| 出生日 = {{生年月日と年齢|1960|2|23}}
}}
{{日本の皇室}}
とある文字列から 「基礎情報 皇族・貴族」の中をPHPで抜き出したいのですが ?R
可能でしょうか
↓この様に
| 人名 = 徳仁親王
| お印 = [[アズサ|梓]]{{日本の皇室}}
| 出生日 = {{生年月日と年齢|1960|2|23}}
> ネストしている文字
ネストしている部分は無い感じですが、「{{日本の皇室}}」が複数回出現していることを指しているのでしょうか?
例示されている文字列が正しく、複数の方の情報が無いと仮定します。
一般的に考えられるのは、2種類でしょう。
与えられる文字列は、改行文字は LF のみ、エンコードは UTF-8 であるとします。
その1.正規表現でマッチする部分を取得する
$str = <<<EOL {{存命人物の出典明記|date=2011-11}} {{基礎情報 皇族・貴族 | 人名 = 徳仁親王 | お印 = [[アズサ|梓]]{{日本の皇室}} | 出生日 = {{生年月日と年齢|1960|2|23}} }} {{日本の皇室}} EOL; preg_match('/{{基礎情報 皇族・貴族\n(.+\n)}}/su', $str, $mch); var_dump($mch[1]);
その2.文字列の位置を探し部分文字列で取得する
// $str は上記と同じ $pos1 = strpos($str, '{{基礎情報 皇族・貴族'."\n"); $pos1 += strlen('{{基礎情報 皇族・貴族'."\n"); $pos2 = strpos($str, '}}'."\n".'{{日本の皇室}}', $pos1); $result = substr($str, $pos1, $pos2 - $pos1); var_dump($result);
他のエンコードでもキーになる文字列(「基礎情報 皇族・貴族」「日本の皇室」)がご提示のものであれば多分動作するでしょう。
また、ご承知の事とは思いますが、外部からもとになる文字列を取得するのならスクリプトのエンコードと一致していないと(または一致するように変換しないと)望む結果にはなりません
コメント(0件)