7
votes

Php correspond à une chaîne exactement

if ($check = '/\[quote(.*?)\](.*?)\[\/quote\]/su') {
$spam['spam'] = true;
$spam['error'] .= 'Spam post quote.<br />';
}

7 commentaires

+1 Parce que c'est un résultat très réel / piège d'une langue qui vous permet de retourner la valeur d'une mission.


@Robagar Ce vraiment est le débogage 101. Les upvotes sont destinés à, que vous pouvez voir lorsque vous planiez sur le bouton UPVOTE, "questions utiles montrant l'effort de recherche". Les deux ne s'appliquent pas ici.


D'accord avec CODECASTER, cela ressemble à votre niveau de programmation PHP et de programmation générale n'est pas à égalité avec la tâche que vous devez résoudre. Cet endroit n'est pas fait pour enseigner la programmation de base ni PHP.


@Codecaster - et les bowvotes sont pas pour frapper les débutants.


@Robagar Après avoir publié votre première question, vous acceptez d'avoir fait vos devoirs et de faire preuve de recherches. Les bowvotes ne sont pas personnelles, vous votez la question vers le bas. Et prouve-moi mal, mais ici, nous avons un autre "Veuillez corriger cette regex pour moi sans que je fournisse une" entrée "->" Exemples "de sortie souhaités". Upvote tout ce que vous aimez.


Ce ne serait pas une grande question sans réponse. Je suis désolé pour ma première question si j'étais contrarié quiconque mais c'est juste une question personnelle que je me suis battu pour comprendre seul.


@ C0nw0nk Je pense qu'il disait que vous devez modifier la question pour inclure ce que vous voulez que le code génère ...


5 Réponses :


2
votes

Vous utilisez l'opérateur d'affectation, = code>, au lieu de l'opérateur d'égalité == code>.

Vous devez utiliser P>

if ($check == 'this is a string') {


0 commentaires

2
votes

si ($ check = 'ceci est une chaîne') attribue la chaîne à $ vérifier variable qui est toujours définie et renvoie toujours vrai dans le si < / p>

devrait être si ($ cocher == 'ceci est une chaîne')


4 commentaires

qui est toujours défini et renvoie donc toujours vrai - pas entièrement vrai. Si vous faites si ($ check = 0) il évaluera à FALSE. Ce qui arrivera réellement ici, c'est que PHP évaluera le côté droit de l'expression comme booléen.


Exact, mais tant que vous attribuez une chaîne non vide, elle va évaluer à un véritable équivalent.


... à moins que la chaîne ne soit '0'


Merci, il fonctionnait pour ma chaîne de base mais pas quand je commence à compliquer des choses avec des modèles de regex



11
votes

Vous devez utiliser == non seulement = xxx

= attribuera la variable.

== fera une comparaison lâche

=== fera une comparaison stricte

Voir opérateurs de comparaison pour plus d'informations.


3 commentaires

Si vous voulez vraiment être exact, utilisez l'opérateur de comparaison strict ( === ), sinon ce qui suit est vrai: si ('123' == 123)


Merci, il fonctionnait pour ma chaîne de base mais pas quand je commence à compliquer des choses avec des modèles de regex


Ouais, les comparaisons de cordes ne fonctionneront pas à l'aide de Regex ... Pour cela, vous auriez besoin de faire un Preg_Match - php.net/manual/fr/function.cepeg-match.php



3
votes

Pour comparaison d'égalité, vous souhaitez que le == code>. = code> est affectation.

if ($check == 'this is a string') {


0 commentaires

2
votes

L'opérateur de comparaison == fonctionnera dans la plupart des cas, mais ne parvient pas à faire une correspondance exacte dans certains cas de bord *.

Utilisation === Opérateur est le meilleur. P>

$check = '2';
if ($check == '          2') {


0 commentaires