0

私はこれに何時間もいました...どんな助けでも大歓迎です。

preg_match_all文字列「Level:」と「」<HR>の間にしたい

文字を追加する場合を除いて、すべてが機能しますh

なぜ?!?

<?php
include("courses.php");
preg_match_all('/(level:.*?)r>/i', $str, $matches); 
// this works but picks up <br>, so i wanted to add in the letter h

preg_match_all('/(level:.*?)h/i', $str, $matches); 
// i've tried changing it to `hr` but that fails, now, *even only* `h` fails

print_r($matches[1]);
?>

hをエスケープしようとしましたが、この文字の何が問題なのか理解できません。

文字列は次のとおりです。

$str='Level: <B>Undergraduate</B><BR>
Information Literacy Course: <B>N</B><BR>
Special Restriction: <B>None</B><BR>
<HR>';
// this repeats alot. I just wrote it out once, but it's all in the same variable like this.

ひもを頼んでくれた皆さんが私の頭の電球に火をつけたと思います。私は改行を考慮していませんか?

4

1 に答える 1

3

なぜ失敗すると思うのかわかりませんが、これら2つの用語の間に文字列が必要な場合は次のようになります。

preg_match_all('/Level:(.*?)<hr>/i', $str, $matches);
// $matches[1] contains the matches

それが機能しない場合は、文字列に改行が含まれている可能性があります。その場合は、改行も一致させるための/s 修飾子が必要です。.

preg_match_all('/Level:(.*?)<hr>/is', $str, $matches);
于 2012-10-02T05:01:12.267 に答える