0

私はそれを理解していません、正規表現は私を嫌っているようです。

HTMLコードから単純なパターンを取得する必要があります

タグの間に単語が必要です。

何らかの理由で、javascriptオンライン正規表現ツールではこれは機能します:

$pattern = '/<image>(.*?)<\/image>/';

私が検索している例はここにあります:

<p>Die exakten Maße für die Gruppenmontage mit Bobilink sehen sie hier:</p>\r\n</td>\r\n<td>\r\n<p><image>classic_b montage link.jpg</image></p>

しかし、私はArray()の出力だけを取得します私の完全なphpコード:

$zeilen = file('j25.sql'); 
$pattern = '/<image>(.*?)<\/image>/';
foreach ($zeilen as $zeile) {
    preg_match($pattern, $zeile, $matches);
}
echo '<h1>Matches</h1>';
print_r($matches); 

私が準備をしていなければ、これが週末全体を台無しにするだろう誰かを助けてください。間違いはどこにありますか?

どうもありがとうございました

4

5 に答える 5

1

タグ間のコンテンツだけが必要な場合は、$matches[1]に保存されます。コードでは、分析する各行で$matchesが消去されます。結果の配列を取得するには、他の変数を使用する必要があります。

$results = array();
foreach ($zeilen as $zeile) {
    if (preg_match($pattern, $zeile, $matches)) {
        $results[] = $matches[1];
    }
}
print_r($results); 

そして、あなたの表現では、「*?」を置き換えることができます。「+」(1つ以上の鉱石を意味します)

于 2013-02-22T13:14:21.930 に答える
0

問題は正規表現ではありません...これは機能します:

<?php 
$zeile = "<p>Die exakten Maße für die Gruppenmontage mit Bobilink sehen sie hier:</p>\r\n</td>\r\n<td>\r\n<p><image>classic_b montage link.jpg</image></p>";

// $zeilen = file('j25.sql'); 
$pattern = '/<image>(.*?)<\/image>/';
// foreach ($zeilen as $zeile) {
    preg_match($pattern, $zeile, $matches);
// }
echo '<h1>Matches</h1>';
print_r($matches); 

 ?>

この出力を生成するには...

<h1>Matches</h1>Array
(
    [0] => <image>classic_b montage link.jpg</image>
    [1] => classic_b montage link.jpg
)
于 2013-02-22T13:01:49.470 に答える
0

あなたのテストコードはテストphpファイルで私のために働きます...

$testStr = '<p>Die exakten Maße für die Gruppenmontage mit Bobilink sehen sie hier:</p>\r\n</td>\r\n<td>\r\n<p><image>classic_b montage link.jpg</image></p>';
$pattern = '/<image>(.*?)<\/image>/';
preg_match($pattern, $testStr, $matches);
print_r($matches); 

//outputs:   Array ( [0] => classic_b montage link.jpg [1] => classic_b montage link.jpg )

データファイルの内容を投稿できますか?

于 2013-02-22T13:02:16.157 に答える
0

PHPがコンテンツを読み取れるように、ファイルに正しいサーバー権限があることを確認してください。

于 2013-02-22T13:15:27.387 に答える
0

間違いは$matches、ループの反復ごとに値が再定義されるため、ファイルの最後の行にのみ一致が含まれることです。matches[1]Romainsの回答のように、各行から別の配列にキャプチャグループの一致を追加するか、次を使用できます。

$zeilen = file_get_contents('j25.sql'); 
$pattern = '/<image>(.*?)<\/image>/';
preg_match_all($pattern, $zeilen, $matches);

echo '<h1>Matches</h1>';
print_r($matches[1]); 
于 2013-02-22T13:21:22.387 に答える