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

不知道为什么你认为它会失败,但如果你想要这两个术语之间的字符串:

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 回答