-1
votes

Impossible de trouver la position de la dernière occurrence d'une sous-chaîne

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;

php

2 commentaires

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


3 Réponses :


0
votes

$ var = array ('Madrid', 'Paris', 'Londres');

echo end ($ var);


1 commentaires

Veuillez expliquer comment cela résout le problème d'OP.



-1
votes

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)
}
*/


0 commentaires

0
votes

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


0 commentaires