我的申请需要帮助。我想将子字符串与正则表达式匹配,然后将其提取出来。有我的代码:
$text = getTranslation('end_date', $translation);
if (strstr($text, "/@:url[.*?]/")){
$text = str_replace("/@:url[.*?]/", "<a href='$promo->wabsiteUrl'>ANYTHING</a>", $text);
}
echo $text;
getTranslation()
是我创建的一种方法,用于在对象end_date
中获取翻译项$translation
。问题是我对正则表达式很糟糕。我尝试了一些东西,它不起作用。
以下是变量$text
的内容:@:url[Click here] to find out where to buy Razer inc.
(来自$translation
)
@:url
等同于我的促销网站,然后[]
中的内容是我的<a href=""></a>
元素的文字。
因此,我需要查找@:url[ANYTHING]
,然后提取ANYTHING
以创建此<a href="">ANYTHING</a>
答案 0 :(得分:2)
我有点迷失,所以这就是我的理解:
preg_replace("#/@:(.*?)\[(.*?)\]/#", "<a href=\"$1\">$2</a>", $text);
这将匹配/@:<something>[anotherthing]/
形式的字符串,并将其替换为<a href="something">anotherthing</a>
更新
preg_replace("#/@:url\[(.*?)\]/#", "<a href=\"".$promo->websiteUrl."\">$1</a>", $text);
这将匹配/@:url[thing]/
形式的字符串,并将其替换为<a href="your promo url in that variable">thing</a>
如果您不需要//
,那么您可以将正则表达式更改为"#@:url\[(.*?)\]#"
答案 1 :(得分:-1)
你能试试吗?
if(preg_match_all('%@:url\[(.*?)\]%i', $text, $matches)){
print_r($matches);
}