in dlp/src/inspect_string_multiple_rules.php [52:138]
function inspect_string_multiple_rules(
// TODO(developer): Replace sample parameters before running the code.
string $projectId,
string $textToInspect = 'patient: Jane Doe'
): void {
// Instantiate a client.
$dlp = new DlpServiceClient();
$parent = "projects/$projectId/locations/global";
// Specify what content you want the service to Inspect.
$item = (new ContentItem())
->setValue($textToInspect);
// Construct hotword rules
$patientRule = (new HotwordRule())
->setHotwordRegex((new Regex())
->setPattern('patient'))
->setProximity((new Proximity())
->setWindowBefore(10))
->setLikelihoodAdjustment((new LikelihoodAdjustment())
->setFixedLikelihood(Likelihood::VERY_LIKELY));
$doctorRule = (new HotwordRule())
->setHotwordRegex((new Regex())
->setPattern('doctor'))
->setProximity((new Proximity())
->setWindowBefore(10))
->setLikelihoodAdjustment((new LikelihoodAdjustment())
->setFixedLikelihood(Likelihood::VERY_UNLIKELY));
// Construct exclusion rules
$wordList = (new Dictionary())
->setWordList((new WordList())
->setWords(['Quasimodo']));
$quasimodoRule = (new ExclusionRule())
->setMatchingType(MatchingType::MATCHING_TYPE_PARTIAL_MATCH)
->setDictionary($wordList);
$redactedRule = (new ExclusionRule())
->setMatchingType(MatchingType::MATCHING_TYPE_PARTIAL_MATCH)
->setRegex((new Regex())
->setPattern('REDACTED'));
// Specify the exclusion rule and build-in info type the inspection will look for.
$personName = (new InfoType())
->setName('PERSON_NAME');
$inspectionRuleSet = (new InspectionRuleSet())
->setInfoTypes([$personName])
->setRules([
(new InspectionRule())
->setHotwordRule($patientRule),
(new InspectionRule())
->setHotwordRule($doctorRule),
(new InspectionRule())
->setExclusionRule($quasimodoRule),
(new InspectionRule())
->setExclusionRule($redactedRule),
]);
// Construct the configuration for the Inspect request, including the ruleset.
$inspectConfig = (new InspectConfig())
->setInfoTypes([$personName])
->setIncludeQuote(true)
->setRuleSet([$inspectionRuleSet]);
// Run request
$inspectContentRequest = (new InspectContentRequest())
->setParent($parent)
->setInspectConfig($inspectConfig)
->setItem($item);
$response = $dlp->inspectContent($inspectContentRequest);
// Print the results
$findings = $response->getResult()->getFindings();
if (count($findings) == 0) {
printf('No findings.' . PHP_EOL);
} else {
printf('Findings:' . PHP_EOL);
foreach ($findings as $finding) {
printf(' Quote: %s' . PHP_EOL, $finding->getQuote());
printf(' Info type: %s' . PHP_EOL, $finding->getInfoType()->getName());
printf(' Likelihood: %s' . PHP_EOL, Likelihood::name($finding->getLikelihood()));
}
}
}