我一直试图得到我的WordPress主题的字体,我enqueing数组。这只是测试。
输入时:
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
)
字体名称有空格的地方有个+
符号,我想去掉它。
我不是正则表达式Maven。所以,我没办法做到。
注意:我知道我可以用str_replace()
来做,但是我不想经历那么长的过程。我想知道当我们收集匹配的表达式时,是否有可能转义+
符号并在那里留下一个空白。
4条答案
按热度按时间dxxyhpgq1#
url中编码为加号(+)的空格。您应该对url进行解码。
hgncfbus2#
不使用正则表达式:
使用正则表达式:
bpzcxfmw3#
从你的代码中,输出是这样的。
如果是正确的,那么我正在解决这个问题“+”。这里是解决方案。
zlhcx6iw4#
通常,您需要考虑的字符数超过
+
个。URL查询参数中的特殊字符(如“与”符号(
&
))和非ASCII字符必须使用百分比编码(%xx
)进行转义。此外,提交HTML表单时,空格将使用+
字符进行编码。例如:
Jacques+%26+Gilles
U+1E99 (LATIN SMALL LETTER Y WITH RING ABOVE)
序列化为UTF-8八位字节(E1
BA
99
),将转义为:%e1%ba%99
要正确地执行所需操作,必须从URL中提取查询字符串,并使用
parse_str()
提取name=value
对。parse_str()
函数将自动对包含+
字符的名称和值执行urldecode()
操作。首先,在
?
字符上拆分URL以提取查询字符串:您也可以使用
parse_url ($url, PHP_URL_QUERY)
,但在这种情况下,它不会为您带来太多好处。然后提取所有参数:
**注意:**您应该始终指定
parse_str()
的第二个参数,以避免损坏现有变量。