我需要在给定的字符串中计算这些字符的出现次数(大多数必须被转义):
[ // to be escaped
\ // to be escaped
] // to be escaped
^ // to be escaped
{ // to be escaped
| // to be escaped
} // to be escaped
~
€
所以我最终得到了这种模式:'/[\[|\]|€\{|}|\\|\^|\||~]/u'
,希望它是正确的(不幸的是我在正则表达式方面不是很好,需要学习更多)。无论如何,结果:
$arr = array();
$string = 't€s||t] st^_^ring[}}';
preg_match_all('/[\[|\]|€\{|}|\\|\^|\||~]/u', $string, $arr);
有点儿:
array
0 =>
array
0 => string '€' (length=3)
1 => string '|' (length=1)
2 => string '|' (length=1)
3 => string ']' (length=1)
4 => string '^' (length=1)
5 => string '^' (length=1)
6 => string '[' (length=1)
7 => string '}' (length=1)
8 => string '}' (length=1)
我不知道如何解释它。我可以简单count($result[0])
吗?有更可靠的方式吗?
答案 0 :(得分:3)
根据the doc,preg_match_all
的返回值是一个表示完整模式匹配数的整数,或者是一个错误的布尔 false 。
答案 1 :(得分:2)
您是否尝试过count_chars()?它为您提供字符串中使用的所有字符的统计信息。
答案 2 :(得分:0)
你可以像这样轻松逃脱:
preg_replace("/([\[\]\\\^\{\}\|\~\€])/", "\\$1", $string);
(如果那是你追求的最终结果)