![](/img/trans.png)
[英]How can I get results without HTML codes with preg_match_all in PHP?
[英]How can I trim whitespace from results of preg_match_all in PHP?
给定 function:
function getUrlsAndEmails($string) {
$regex = '/(?:[^\s]+@[a-z]+(\.[a-z]+)+)|(?:(?:(?:[a-z]+:\/\/)|\s)[a-z]+(\.[a-z]+)+(\/[^\s]*)?)/';
preg_match_all($regex, $string, $matches);
return ($matches[0]);
}
有时会返回如下结果:
Array
(
[0] => google.com
[1] => yahoo.com
)
如何有效地从preg_match_all()
的所有结果中去除空格?
当然,我可以遍历所有结果和trim()
,但有没有比将其添加到上面的 function 更有效的方法:
foreach ($matches[0] as $k => $v) {
$matches[0][$k] = trim($v);
}
尝试这个:
$regex = '/(?:[^\s]+@[a-z]+(\.[a-z]+)+)|(?:(?:(?:[a-z]+:\/\/)|(?!\s))[a-z]+(\.[a-z]+)+(\/[^\s]*)?)/';
它对空间使用否定的超前断言。
使用map('trim')
。
<?php
$pattern = Pattern::of('(?:[^\s]+@[a-z]+(\.[a-z]+)+)|(?:(?:(?:[a-z]+:\/\/)|\s)[a-z]+(\.[a-z]+)+(\/[^\s]*)?)');
$matcher = $pattern->match($string);
var_dump($matcher->map('trim'));
结果
Array
(
[0] => 'google.com'
[1] => 'yahoo.com'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.