PHP没有结束
问题描述:
我想学习正则表达式,并有一个字符串一些正则表达式,我要开始为(不包括)PHP没有结束
.com/
,并最终成为(不包括)
">[tomato
我可以使基本的正则表达式正常,但它保持包括番茄部分,而不是在它之前结束。所以,如果我有
'sdf98uj3.com/sdjkh.sdf./sdf.sdf">[tomatoiosdf8uj3'
,那么我想返回:
sdjkh.sdf./sdf.sdf
我在PHP中使用的preg_match。有任何想法吗?
答
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];
如果你实际上是在解析URL或HTML (尽管它们对很多事情都非常漂亮,值得学习)。对于URL,请查看parse_url或pathinfo下的PHP手册。对于HTML,看看SimpleXML。 – dnagirl 2011-01-31 17:30:47