我一直在尝试获取我在wordpress主题enqeueing的字体数组。这只是为了测试。正确的正则表达式来检测从谷歌字体链接src的字体家族名称
对于输入:
http://fonts.googleapis.com/css?family=Arimo:400,700|Quicksand:400,700|Cantarell:400,700,400italic,700italic|Muli:300,400,300italic,400italic|Roboto+Slab:400,700|Share:400,700,400italic,700italic|Inconsolata:400,700|Karla:400,700,400italic,700italic|Maven+Pro:400,500,700,900|Roboto+Slab:400,700|Open+Sans:400italic,600italic,700italic,400,600,700
我需要的输出是这样的:
array(
[0] => 'Arimo',
[1] => 'Quicksand',
[2] => 'Cantarell',
... so on
)
到目前为止,我已经做了几乎所有的东西,但一个小问题。
我的代码:
$input = 'http://fonts.googleapis.com/css?family=Arimo:400,700|Quicksand:400,700|Cantarell:400,700,400italic,700italic|Muli:300,400,300italic,400italic|Roboto+Slab:400,700|Share:400,700,400italic,700italic|Inconsolata:400,700|Karla:400,700,400italic,700italic|Maven+Pro:400,500,700,900|Roboto+Slab:400,700|Open+Sans:400italic,600italic,700italic,400,600,700';
$against = "/[A-Z][a-z]+[\+][A-Z][a-z]+|[A-Z][a-z]+/";
$matches = array()
preg_match_all($against, $input, $matches);
print_r($matches);
由此看来,输出是这样的:
array(
0 => Arimo
1 => Quicksand
2 => Cantarell
3 => Muli
4 => Roboto+Slab
5 => Share
6 => Inconsolata
7 => Karla
8 => Maven+Pro
9 => Roboto+Slab
10 => Open+Sans
)
还有的+
标志,其中的字体名称中有空格。我想摆脱这一点。
我不是正则表达式专家。所以,无法做到这一点。
注:我知道我可以用str_replace()
做到这一点,但不想经历这么长的过程。我想知道是否有可能通过+
登录,并在收集匹配的表达式时留下空白处。
在我的愚见,你会在一刻或其他需要使用**替换**函数,因为你只调用一个匹配函数。您可以在preg_match之前调用它,或者在数组的每个元素的preg_match之后调用它。由于preg_replace()以一般方式比str_replace()花费更多,所以您可能需要使用它。 –
我希望能通过搜索。也许在正则表达式中,我们搜索一个+符号,而是写一个空白空间。可能吗? –
'str_replace()'不是一个漫长的过程。 –