0

我有一个字符串:

<li><a href="http://www.site.tv/watch/some-text-english-subbed-dubbed-online/" title="title">title</a></li><div class="clear"></div></ul><h3><a name="dot">.dot</a></h3><ul><li><a href="http://www.site.tv/watch/searched-too-some-words-english-subbed-dubbed-online/" title="title2">title22</a></li>

我想用 preg_match_all 找到“some-text”和“searched-too-some-words”。但它不适用于这个

preg_match_all('/http\:\/\/www\.site\.tv\/watch\/([^-]*)-english[^\/]*/s', $var, $result, PREG_PATTERN_ORDER);

$result 什么都不是

或者

preg_match_all('/http\:\/\/www\.site\.tv\/watch\/(.*)-english[^\/]*/s', $var, $result, PREG_PATTERN_ORDER);

$result will be: http://www.site.tv/watch/some-text-english-subbed-dubbed-online/" title="title">title</a></li><div class="clear"></div></ul><h3><a name="dot">.dot</a></h3><ul><li><a href="http://www.site.tv/watch/searched-too-some-words-english-subbed-dubbed-online

有没有办法在“http://www.site.tv/watch/”之后找到这个词,直到“-english”

问候基督徒

4

1 回答 1

1

我假设您要将 url 与 word 之前的文本匹配english

尝试

preg_match_all('/http\:\/\/www\.site\.tv\/watch\/(.*?)-english[^\/]*/s', $var, $result, PREG_PATTERN_ORDER);

实际上,您不需要转义冒号:。更好的是,您可以使用其他东西作为分隔符,正如 Asad 的评论所说

preg_match_all('|http://www\.site\.tv/watch/(.*?)-english[^/]*|s', $var, $result, PREG_PATTERN_ORDER);

.*?是一个惰性匹配 - 使.匹配尽可能少的字符,直到找到下一个匹配/令牌,在你的情况下是-english

于 2012-12-08T15:30:50.410 回答