我有以下字符串:
$str = "A string".
当我使用时:
preg_match("/A string/", $str)
我得到的匹配一切正常,但我想对另一个字符串使用相同的正则表达式:
$str2 = "A test string".
对于这种情况,我可以使用:
"/A (test )?string/"
但我希望它更复杂,它也应该能够匹配这样的字符串,例如:
A sttest ring test A string
我的意思是子字符串“test”可以出现在主题的任何地方。
甚至可以为此找到正则表达式吗?
答案 0 :(得分:0)
你可以试试这样的事情
$str = "My test String";
if (strpos($str, 'test') !== false) {
echo 'true';
}
答案 1 :(得分:0)
试试这个:
$str = "A sttest ring";
$newstr = preg_replace("/\s*test\s*/", "", $str);
preg_match("/A string/", $newstr, $matches);
echo $matches ? 'true' : 'false';
答案 2 :(得分:0)
我会为此创建一个函数:
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
传递给第3个参数即可使其区分大小写。另外,将true
传递给第4个参数以比较空格。