>我有以下字符串:
$str = "A string".
当我使用:
preg_match("/A string/", $str)
我得到了匹配,一切正常,但我想对另一个字符串使用相同的正则表达式:
$str2 = "A test string".
对于这种情况,我可以使用:
"/A (test )?string/"
但我希望它更复杂,它也应该能够匹配这样的字符串,例如:
一个ST测试环测试一个字符串
我的意思是子字符串"测试"可以出现在主题中的任何位置。
甚至有可能为此找到正则表达式吗?
你可以尝试这样的事情
$str = "My test String";
if (strpos($str, 'test') !== false) {
echo 'true';
}
试试这个:
$str = "A sttest ring";
$newstr = preg_replace("/'s*test's*/", "", $str);
preg_match("/A string/", $newstr, $matches);
echo $matches ? 'true' : 'false';
在线演示
我会为此创建一个函数:
function containsLetters($testString, $lettersString, $caseSensitive = false, $whiteSpaces = false){
if(!$caseSensitive){
$testString = strtolower($testString); $lettersString = strtolower($lettersString);
}
if($whiteSpaces){
$tw = $testString; $lw = $lettersString;
}
else{
$tw = preg_replace('/'s/', '', $testString); $lw = preg_replace('/'s/', '', $lettersString);
}
$tst = str_split($tw); $ltr = str_split($lw); $c = count($ltr); $r = array();
foreach($ltr as $l){
foreach($tst as $i => $t){
if($l === $t){
$a = array_splice($tst, $i, 1); $r[] = $a[0];
}
}
}
if(count($r) >= $c){
return true;
}
return false;
}
$test = containsLetters('A sttest ring', 'a test string');
只需将true
传递给第三个参数即可使其区分大小写。此外,true
传递给第 4 个参数以比较空格。