Bro*_*die 5 php regex preg-match-all
我还在学习很多关于PHP的知识,字符串更改是我感兴趣的东西.我之前使用过preg_match来验证电子邮件地址或只搜索查询.
我刚从这篇文章中发表我的正则表达式有什么问题?并且好奇为什么preg_match_all函数产生2个字符串,1 w /一些字符被剥离,然后另一个带有所需的输出.
根据我对该函数的理解,它使用RegEx来逐字符串地逐字符号来评估如何处理它.这个RegEx的结构是否可以绕过第一个数组条目并产生所需的结果?
所以你不必去另一个线程
$str = 'text^name1^Jony~text^secondname1^Smith~text^email1^example-
free@wpdevelop.com~';
preg_match_all('/\^([^^]*?)\~/', $str, $newStr);
for($i=0;$i<count($newStr[0]);$i++)
{
echo $newStr[0][$i].'<br>';
}
echo '<br><br><br>';
for($i=0;$i<count($newStr[1]);$i++)
{
echo $newStr[1][$i].'<br>';
}
Run Code Online (Sandbox Code Playgroud)
这将输出
^乔尼斯〜
^史密斯〜
^example-free@wpdevelop.com~
强尼
·史密斯
example-free@wpdevelop.com
我很好奇,如果2个数组条目的原因是由于字符串的原始sytax或者它是函数的正常处理响应.对不起,如果这不应该在这里,但我真的很好奇这是如何工作的.
谢谢,布罗迪
这是 preg_match 和 preg_match_all 的标准行为 - “匹配值”数组中的第一个字符串是正则表达式模式捕获的完整字符串。()随后的数组值是“捕获组”,其存在取决于正则表达式模式中对的放置/位置。
在您的正则表达式的情况下,/\^([^^]*?)\~/完整的匹配字符串将是
^ Jony ~
| | |
^ ([^^]*?) ~ -> $newstr[0] = ^Jony~
-> $newstr[1] = Jony (due to the `()` capture group).
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |