Php preg_replace中的Regex用于检测url格式和提取元素
我需要用嵌入的flash对象替换某些用户输入的url…我在使用正则表达式匹配url时遇到了问题…我认为主要是因为url对SEO友好,因此更难解析Php preg_replace中的Regex用于检测url格式和提取元素,php,regex,url,pattern-matching,Php,Regex,Url,Pattern Matching,我需要用嵌入的flash对象替换某些用户输入的url…我在使用正则表达式匹配url时遇到了问题…我认为主要是因为url对SEO友好,因此更难解析 URL structure: http://www.site.com/item/item_title_that_can_include_1('_etc-32CHARACTERALPHANUMERICGUID 我需要检测该格式的URL的匹配,并捕获32CHARACTERALPHANUMERICGUID,它总是放在URL中的-后面 大概是这样的: $re
URL structure: http://www.site.com/item/item_title_that_can_include_1('_etc-32CHARACTERALPHANUMERICGUID
我需要检测该格式的URL的匹配,并捕获32CHARACTERALPHANUMERICGUID,它总是放在URL中的-后面
大概是这样的:
$ret = preg_replace('#http://www\.site\.com/item/([^-])-([a-zA-Z0-9]+)#','<embed>itemid=$2</embed>', $ret);
$ret=preg\u replace('#http://www\.site\.com/item/([^-])-([a-zA-Z0-9]+)#','itemid=$2',$ret);
由于某些原因,上面的代码找不到指定格式的URL的匹配项。我不熟悉正则表达式,所以我想我遗漏了一些非常明显的东西 你应该退房
检查结果-它是用于解析URL的。您将能够从返回的令牌中提取所需的数据
如果你疯了,试试这个
/^http:\/\/www\.site\.com\/item\/[^-]*\-([a-zA-Z0-9]{32})$/
你的例子就快到了,但是
- 如果不指定字符范围,即
,则仍然需要一个量词。我放置了[^-]
,或0或更多*
- 您似乎没有使用项目标题,因此我们不会费心捕捉它
- 如果字符串始终与之完全相同,则应使用开头(
)和结尾(^
)锚定李>$
- 您说GUID是32个字符,所以我们可以使用
量词显式地声明它{32}