PHP没有结束

问题描述:

我想学习正则表达式,并有一个字符串一些正则表达式,我要开始为(不包括)PHP没有结束

.com/ 

,并最终成为(不包括)

">[tomato 

我可以使基本的正则表达式正常,但它保持包括番茄部分,而不是在它之前结束。所以,如果我有

'sdf98uj3.com/sdjkh.sdf./sdf.sdf">[tomatoiosdf8uj3' 

,那么我想返回:

sdjkh.sdf./sdf.sdf 

我在PHP中使用的preg_match。有任何想法吗?

+0

如果你实际上是在解析URL或HTML (尽管它们对很多事情都非常漂亮,值得学习)。对于URL,请查看parse_url或pathinfo下的PHP手册。对于HTML,看看SimpleXML。 – dnagirl 2011-01-31 17:30:47

preg_match('~\.com/(.*?)">\[tomato~', $str, $match); 

$match[1]包含您的字符串。 (.*?)是一个capture group,它捕获.com/">[tomato之间的每个字符。

http://www.regular-expressions.info/是学习正则表达式的好开始。


也没有正则表达式来解决,使用strpos(docs)strrpos(docs)substr(docs):,正则表达式是不是最好的方式去

$start = strpos($str, '.com/'); 
$end = strrpos($str, '">[tomato'); // or strpos to find the first occurance 
$sub = substr($str, $start, $end-$start); 
+0

我知道他们会是一个更好的方式!谢谢! – David19801 2011-01-31 17:28:10

preg_match('/(.*?)\.com/(.*?)">\[tomato(.*)/', $text, $matches); 

echo $matches[2];