Php preg_匹配所有特殊字符
我正在尝试对包含我要提取的多个短语的数据进行预匹配 数据: 我想将两个名字Llane和Casey提取到一个数组中。我目前正在使用我的代码以及我的代码本身来尝试解决这个问题,但即使有一些互联网上的优秀指南,regex似乎也很难理解。据我所知,这应该是可行的:Php preg_匹配所有特殊字符,php,regex,special-characters,preg-match-all,Php,Regex,Special Characters,Preg Match All,我正在尝试对包含我要提取的多个短语的数据进行预匹配 数据: 我想将两个名字Llane和Casey提取到一个数组中。我目前正在使用我的代码以及我的代码本身来尝试解决这个问题,但即使有一些互联网上的优秀指南,regex似乎也很难理解。据我所知,这应该是可行的: preg_match_all("/us\/(.*?)\/HÓWL'/",$data,$output); 但我得到的只是$output[0]和$output[1],它们都是空白的。我以前没有遇到过问题,所以可能是特殊字符,但是我只能找到pre
preg_match_all("/us\/(.*?)\/HÓWL'/",$data,$output);
但我得到的只是$output[0]和$output[1],它们都是空白的。我以前没有遇到过问题,所以可能是特殊字符,但是我只能找到preg_match_的信息来检测特殊字符,而不仅仅是在字符串中使用它们。任何帮助都会很好,我已经在这个问题上坚持了大约4天,并且花了大量的时间试图解决它。案例不敏感可能没有正常工作。 使用以下命令:
$regex = '~us/\K.*?(?=/Hówl)~';
$count = preg_match_all($regex, $yourstring, $matches);
if($count) print_r($matches[0]);
比赛:
Llane
Casey
在中查看比赛
解释
匹配文字字符us/
告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项\K
延迟匹配最多*?
- 向前看
可以断言接下来是(?=/Hówl)
Hówl
$regex = '~us/\K.*?(?=/Hówl)~';
$count = preg_match_all($regex, $yourstring, $matches);
if($count) print_r($matches[0]);
比赛:
Llane
Casey
在中查看比赛
解释
匹配文字字符us/
告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项\K
延迟匹配最多*?
- 向前看
可以断言接下来是(?=/Hówl)
Hówl
$regex = '~us/\K.*?(?=/Hówl)~';
$count = preg_match_all($regex, $yourstring, $matches);
if($count) print_r($matches[0]);
比赛:
Llane
Casey
在中查看比赛
解释
匹配文字字符us/
告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项\K
延迟匹配最多*?
- 向前看
可以断言接下来是(?=/Hówl)
Hówl
$regex = '~us/\K.*?(?=/Hówl)~';
$count = preg_match_all($regex, $yourstring, $matches);
if($count) print_r($matches[0]);
比赛:
Llane
Casey
在中查看比赛
解释
匹配文字字符us/
告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项\K
延迟匹配最多*?
- 向前看
可以断言接下来是(?=/Hówl)
Hówl
HÓWL
,而不是HóWL
$data = "'us/Llane/Hówl' then some other text then 'us/Casey/Hówl' and so on";
preg_match_all("~us/(.*?)/Hówl~", $data, $output);
print_r($output[1]);
输出
Array
(
[0] => Llane
[1] => Casey
)
另一方面,除非你知道<代码> H.WL 总是在前斜杠的右边,我会考虑使用完整的字母<代码> \p{L}。这也将允许您匹配重音字符
preg_match_all("~us/(.*?)/\p{L}+~u", $data, $output);
您试图匹配的是
HÓWL
,而不是HóWL
$data = "'us/Llane/Hówl' then some other text then 'us/Casey/Hówl' and so on";
preg_match_all("~us/(.*?)/Hówl~", $data, $output);
print_r($output[1]);
输出
Array
(
[0] => Llane
[1] => Casey
)
另一方面,除非你知道<代码> H.WL 总是在前斜杠的右边,我会考虑使用完整的字母<代码> \p{L}。这也将允许您匹配重音字符
preg_match_all("~us/(.*?)/\p{L}+~u", $data, $output);
您试图匹配的是
HÓWL
,而不是HóWL
$data = "'us/Llane/Hówl' then some other text then 'us/Casey/Hówl' and so on";
preg_match_all("~us/(.*?)/Hówl~", $data, $output);
print_r($output[1]);
输出
Array
(
[0] => Llane
[1] => Casey
)
另一方面,除非你知道<代码> H.WL 总是在前斜杠的右边,我会考虑使用完整的字母<代码> \p{L}。这也将允许您匹配重音字符
preg_match_all("~us/(.*?)/\p{L}+~u", $data, $output);
您试图匹配的是
HÓWL
,而不是HóWL
$data = "'us/Llane/Hówl' then some other text then 'us/Casey/Hówl' and so on";
preg_match_all("~us/(.*?)/Hówl~", $data, $output);
print_r($output[1]);
输出
Array
(
[0] => Llane
[1] => Casey
)
另一方面,除非你知道<代码> H.WL 总是在前斜杠的右边,我会考虑使用完整的字母<代码> \p{L}。这也将允许您匹配重音字符
preg_match_all("~us/(.*?)/\p{L}+~u", $data, $output);
仅供参考,添加了演示和解释,如果您有问题,请告诉我。:)仅供参考,添加了演示和解释,如果您有问题,请告诉我。:)仅供参考,添加了演示和解释,如果您有问题,请告诉我。:)仅供参考,添加了演示和解释,如果您有问题,请告诉我。:)