Ce code fonctionne
$domains = ['.com', '.cc', '.porno'];
foreach($domains as $domain) {
$data = strripos($message, $domain);
return $data;
}
Mais si je passe un tableau, il retourne faux
$domains = '.com'; $data = strripos($message, $domains); return $data;
3 Réponses :
$ var = array ('Madrid', 'Paris', 'Londres');
echo end ($ var);
Veuillez expliquer comment cela résout le problème d'OP.
Si ce ne sont que les postes qui vous intéressent, que diriez-vous de quelque chose comme ça?
<?php
// Random message.
$message = 'Please check our awesome product at awesome.com, and for more stuff go to ourshop.cc. We don\'t deal in porno';
// The TLD extensions you want to find.
$domains = ['.com', '.cc', '.porno'];
// This array will hold all the positions, or FALSE if a TLD was not found.
$tldPositions = [];
// Loop over each TLD and store its last occurring position.
foreach($domains as $domain)
$tldPositions[$domain] = strripos($message, $domain);
var_dump($tldPositions);
/* $tldPositions now holds
array(3) {
[".com"]=>
int(43)
[".cc"]=>
int(81)
[".porno"]=>
bool(false)
}
*/
Ma suggestion:
$string = 'My websites are example.com and example.cc. No porno TLD';
$domains = ['.com', '.cc', '.porno'];
foreach ($domains as $domain) {
if (strstr($string, $domain)) echo "Found: $domain "; // Case sensitive
// OR: if (strripos($string, $domain)) echo "Found: $domain "; // Case insensitive
}
// OUTPUT: Found: .com Found: .cc
Votre code n'a pas de sens si vous souhaitez vérifier votre message par rapport à toutes les extensions TLD, car il se fermera après la première itération. Essayez-vous de détecter la présence de l'une de ces sous-chaînes? Ou avez-vous vraiment besoin de connaître un poste? Et puis d'une seule des extensions possibles, ou de toutes?
Je veux trouver une sous-chaîne