我正在尝试使用 preg_match_all 在文本中查找模式的实例,然后使用该模式来实例化一个类,最后调用一个类函数来打印匹配模式的替换文本。我不知道我是否以正确的方式去做。
我可以用这个 preg_replace 函数找到并替换这个模式 [bandcamp=http://bandcamp-page.com]1[/bandcamp]
$text = preg_replace ("/\[bandcamp=(.+?)\](.+?)\[\/bandcamp\]/", "replacement text here", $text);
但我想使用匹配来创建一个 BandcampAlbum 对象并调用它的 player() 函数来打印出 html。这是我正在尝试的,但到目前为止无济于事。
if (preg_match_all ("/\[bandcamp=(.+?)\](.+?)\[\/bandcamp\]/", $text, $matches)) {
foreach ($matches[0] as $match) {
preg_replace ("/\[bandcamp=(.+?)\](.+?)\[\/bandcamp\]/", "", $text);
$bc = new BandcampAlbum($match[0], $match[1]);
$bc->player();
}
}
foreach 循环中的 preg_replace 旨在摆脱匹配的文本。匹配似乎有效,所以我猜我做错了,而不是犯了正则表达式错误。欢迎任何建议。