2010-12-10 7 views
1

htmlタグ間のデータと一致するpreg_replaceを実行しようとしています。htmlタグ間でpreg_replaceデータ

このパターンはうまく機能しますが、一致文字列を取得する方法はわかりません。

preg_replace("/(?<=>)[^><]+?(?=<)/", "$1",$string); 

正規表現についてはほとんど知らないので、$ 1は一致を返しますが、そうではないと思います。私の主な目標は、私が

preg_replace("/(?<=>)[^><]+?(?=<)/", string_function("$1"),$string); 

答えて

0

のような機能を通して返された試合を置くことができるラインを持つことである私

preg_replace("/(?<=>)[^><]+?(?=<)/", "",$string); 

場合は、今、このパターンは、(上記の)HTMLタグの間のすべてのデータを削除することができます正規表現について多くのことを知らないと、$ 1は一致を返すと仮定しますが、そうではありません。

"$0"を使用してください。あなたはグループをキャプチャしていないので、グループ1は存在しません(つまり、$1は何も参照しません)。 $0とお友達の詳細についてはpreg_replace() docsreplacementパラメータの説明をご覧ください。

私の主な目標は、私はマッチした文字列(複数可)上で機能を実行するには

のような機能を通して返された試合を置くことができ、あなたの代わりにpreg_replace_callback()を使用する必要がある行を持つことです。

1

preg_replace_callbackを使用してカスタム関数を適用すると便利です。

また、preg_replaceは、preg_matchが必要と思われるものは返されません。

0

代わりにpreg_match()を使用してください。次のようにメソッドシグネチャは次のとおりです。

int preg_match (string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]])

あなたはmatchesパラメータに渡すと、それは結果の試合で満たされます。

例えば:

preg_match("/(?<=>)[^><]+?(?=<)/", $string, $matches); 
print_r($matches); 

$matchesあなたが望む結果が含まれている必要があります。

関連する問題