Aller au contenu

captain_torche

Membre+
  • Compteur de contenus

    7 531
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par captain_torche

  1. Renseigne-toi là-dessus, mais ne l'utilise pas encore : à ma connaissance, il n'y a que les navigateurs à base de webkit (Safari, Chrome) qui le gèrent nativement.
  2. Lorsque les WebSockets en HTML5 se seront démocratisés, ça sera sans doute plus simple
  3. Pour être plus précis, la balise <div> et son équivalent "inline" <span> sont les seules balises totalement vides de sens sémantique. Elles ne sont donc à utiliser que s'il n'existe aucune alternative.
  4. Bienvenue ! Tu peux mettre jusqu'à trois urls de sites "non adultes" en signature, pour faire partager tes autres centres d'intérêt
  5. Il faudrait faire en sorte que le lien prenne toute la taille de la cellule, via le CSS.
  6. Le plus simple serait peut-être d'ajouter (dynamiquement ou pas) un base href dans ta page, pour que les fichiers appelés soient relatifs à cette url.
  7. Merci Ernestine ! Je teste tout ça dans la journée, et je garde ce précieux lien sous le coude. Quant à demander à avoir du code valide, je ne peux pas : ça appartient à un concurrent Edit : Ça marche parfaitement, merci beaucoup !
  8. Le souci, c'est que je n'ai pas la main sur le code JSON récupéré. Et j'ai vérifié, il n'y a pas de slashes ajoutés. Un des soucis semble venir du fait que les valeurs sont entourées de guillemets simples au lieu de doubles, mais en les inversant le souci reste le même.
  9. captain_torche

    Valider du JSON

    Je récupère du JSON depuis un flux, destiné à être utilisé en JavaScript. Je dois de mon côté l'utiliser en PHP, et je n'arrive malheureusement pas à utiliser le code tel quel, PHP ayant apparemment besoin d'une syntaxe parfaite, alors que JavaScript permet une syntaxe beaucoup plus permissive. Voici le code en question : {'TLS': {'depAirportName': 'Toulouse', 7: {'standard': {'availableDatesAvailable': 'True', 'availableItemMetaData': ['11/2011', '12/2011', '1/2012', '2/2012', '3/2012'], '27/11/2011': {'skuId': '910329858', 'returnArrivalDate': '20111204T00:00:00', 'returnDepartureDate': '20111204T00:00:00', 'AI': {'boardTypeDescription': 'Formule tout compris', 'allocatedRooms': ['2-1'], 'totalRoomAllocationPrice': 858.0, 'rooms': [{'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'totalRoomPrice': {'productPrice': 858.0}, 'roomTypeId': '2', 'roomPassengers': [{'passengerPrice': {'boardTypeSupplement': {'productPrice': 0.0}, 'roomTypeSupplement': {'productPrice': 0.0}, 'finalPrice': {'productPrice': 334.0}, 'holidayOptions': [{'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '460145316', 'price': 4.0, 'ruleTypeId': 29, 'longDescription': u'Taxe de solidarit\ufffd', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': u'Taxe de solidarit\xe9 4 eur', 'id': 460145316, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}, {'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '829419763', 'price': 91.0, 'ruleTypeId': 29, 'longDescription': 'Taxes Obligatoires ', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': 'Taxes Obligatoires 91 eur', 'id': 829419763, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}], 'priceModifierType': {'id': 4, 'description': 'Adult price'}, 'brochurePrice': {'productPrice': 0.0}, 'finalPriceWithSupplements': {'productPrice': 334.0}, 'allInclusivePrice': {'productPrice': 429.0}, 'allInclusiveBrochurePrice': {'productPrice': 0.0}}, 'person': {'passengerType': {'passengerTypeId': 1, 'passengerTypeName': 'Adult'}}, 'quantity': 2}], 'quantity': 1}], 'allInclusivePrice': 429.0}, 'departureArrivalDate': '20111127T00:00:00', 'ticketOnDeparture': ''}}}}, 'availableRooms': {'standard': [{'roomTypeId': '3', 'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 adultes + 1 enfant', 'quantity': 1}, {'roomTypeId': '2', 'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'quantity': 1}, {'roomTypeId': '4', 'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 adultes + 2 enfants', 'quantity': 1}, {'roomTypeId': '1', 'minAdultOccupancy': 1, 'roomTypeName': 'Chambre 1 personne', 'quantity': 2}]}, 'PAR': {'depAirportName': 'Paris', 7: {'standard': {'availableDatesAvailable': 'True', 'availableItemMetaData': ['11/2011', '12/2011', '1/2012', '2/2012', '3/2012'], '27/11/2011': {'skuId': '910608983', 'returnArrivalDate': '20111204T00:00:00', 'returnDepartureDate': '20111204T00:00:00', 'AI': {'boardTypeDescription': 'Formule tout compris', 'allocatedRooms': ['2-1'], 'totalRoomAllocationPrice': 638.0, 'rooms': [{'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'totalRoomPrice': {'productPrice': 638.0}, 'roomTypeId': '2', 'roomPassengers': [{'passengerPrice': {'boardTypeSupplement': {'productPrice': 0.0}, 'discount': {'percentageDiscount': 34.0, 'discountAmount': {'productPrice': 170.0}}, 'roomTypeSupplement': {'productPrice': 0.0}, 'finalPrice': {'productPrice': 224.0}, 'holidayOptions': [{'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '460145316', 'price': 4.0, 'ruleTypeId': 29, 'longDescription': u'Taxe de solidarit\ufffd', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': u'Taxe de solidarit\xe9 4 eur', 'id': 460145316, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}, {'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '829419763', 'price': 91.0, 'ruleTypeId': 29, 'longDescription': 'Taxes Obligatoires ', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': 'Taxes Obligatoires 91 eur', 'id': 829419763, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}], 'priceModifierType': {'id': 4, 'description': 'Adult price'}, 'brochurePrice': {'productPrice': 394.0}, 'finalPriceWithSupplements': {'productPrice': 224.0}, 'allInclusivePrice': {'productPrice': 319.0}, 'allInclusiveBrochurePrice': {'productPrice': 489.0}}, 'person': {'passengerType': {'passengerTypeId': 1, 'passengerTypeName': 'Adult'}}, 'quantity': 2}], 'quantity': 1}], 'allInclusivePrice': 319.0}, 'departureArrivalDate': '20111127T00:00:00', 'ticketOnDeparture': ''}}}}, 'bookingCharge': {'infantPrice': 0.0, 'adultPrice': 0.0, 'childPrice': 0.0}, 'LYS': {'depAirportName': 'Lyon', 7: {'standard': {'availableDatesAvailable': 'True', 'availableItemMetaData': ['11/2011', '12/2011', '1/2012', '2/2012', '3/2012'], '27/11/2011': {'skuId': '910608910', 'returnArrivalDate': '20111204T00:00:00', 'returnDepartureDate': '20111204T00:00:00', 'AI': {'boardTypeDescription': 'Formule tout compris', 'allocatedRooms': ['2-1'], 'totalRoomAllocationPrice': 638.0, 'rooms': [{'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'totalRoomPrice': {'productPrice': 638.0}, 'roomTypeId': '2', 'roomPassengers': [{'passengerPrice': {'boardTypeSupplement': {'productPrice': 0.0}, 'roomTypeSupplement': {'productPrice': 0.0}, 'finalPrice': {'productPrice': 224.0}, 'holidayOptions': [{'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '460145316', 'price': 4.0, 'ruleTypeId': 29, 'longDescription': u'Taxe de solidarit\ufffd', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': u'Taxe de solidarit\xe9 4 eur', 'id': 460145316, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}, {'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '829419763', 'price': 91.0, 'ruleTypeId': 29, 'longDescription': 'Taxes Obligatoires ', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': 'Taxes Obligatoires 91 eur', 'id': 829419763, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}], 'priceModifierType': {'id': 4, 'description': 'Adult price'}, 'brochurePrice': {'productPrice': 0.0}, 'finalPriceWithSupplements': {'productPrice': 224.0}, 'allInclusivePrice': {'productPrice': 319.0}, 'allInclusiveBrochurePrice': {'productPrice': 0.0}}, 'person': {'passengerType': {'passengerTypeId': 1, 'passengerTypeName': 'Adult'}}, 'quantity': 2}], 'quantity': 1}], 'allInclusivePrice': 319.0}, 'departureArrivalDate': '20111127T00:00:00', 'ticketOnDeparture': ''}}}}, 'MRS': {'depAirportName': 'Marseille', 7: {'standard': {'availableDatesAvailable': 'True', 'availableItemMetaData': ['11/2011', '12/2011', '1/2012', '2/2012', '3/2012'], '27/11/2011': {'skuId': '910608955', 'returnArrivalDate': '20111204T00:00:00', 'returnDepartureDate': '20111204T00:00:00', 'AI': {'boardTypeDescription': 'Formule tout compris', 'allocatedRooms': ['2-1'], 'totalRoomAllocationPrice': 638.0, 'rooms': [{'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'totalRoomPrice': {'productPrice': 638.0}, 'roomTypeId': '2', 'roomPassengers': [{'passengerPrice': {'boardTypeSupplement': {'productPrice': 0.0}, 'roomTypeSupplement': {'productPrice': 0.0}, 'finalPrice': {'productPrice': 224.0}, 'holidayOptions': [{'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '460145316', 'price': 4.0, 'ruleTypeId': 29, 'longDescription': u'Taxe de solidarit\ufffd', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': u'Taxe de solidarit\xe9 4 eur', 'id': 460145316, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}, {'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '829419763', 'price': 91.0, 'ruleTypeId': 29, 'longDescription': 'Taxes Obligatoires ', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': 'Taxes Obligatoires 91 eur', 'id': 829419763, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}], 'priceModifierType': {'id': 4, 'description': 'Adult price'}, 'brochurePrice': {'productPrice': 0.0}, 'finalPriceWithSupplements': {'productPrice': 224.0}, 'allInclusivePrice': {'productPrice': 319.0}, 'allInclusiveBrochurePrice': {'productPrice': 0.0}}, 'person': {'passengerType': {'passengerTypeId': 1, 'passengerTypeName': 'Adult'}}, 'quantity': 2}], 'quantity': 1}], 'allInclusivePrice': 319.0}, 'departureArrivalDate': '20111127T00:00:00', 'ticketOnDeparture': ''}}}}, 'holidayOptions': {'baseOption': {}}, 'derivedTotalRoomAllocationPrice': '', 'derivedRooms': [{'roomTypeId': '2', 'quantity': 1}], 'roomAllocationValid': {'standard': 'False'}, 'NTE': {'depAirportName': 'Nantes', 7: {'standard': {'availableDatesAvailable': 'True', 'availableItemMetaData': ['11/2011', '12/2011', '1/2012', '2/2012', '3/2012'], '27/11/2011': {'skuId': '910608972', 'returnArrivalDate': '20111204T00:00:00', 'returnDepartureDate': '20111204T00:00:00', 'AI': {'boardTypeDescription': 'Formule tout compris', 'allocatedRooms': ['2-1'], 'totalRoomAllocationPrice': 638.0, 'rooms': [{'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'totalRoomPrice': {'productPrice': 638.0}, 'roomTypeId': '2', 'roomPassengers': [{'passengerPrice': {'boardTypeSupplement': {'productPrice': 0.0}, 'roomTypeSupplement': {'productPrice': 0.0}, 'finalPrice': {'productPrice': 224.0}, 'holidayOptions': [{'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '460145316', 'price': 4.0, 'ruleTypeId': 29, 'longDescription': u'Taxe de solidarit\ufffd', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': u'Taxe de solidarit\xe9 4 eur', 'id': 460145316, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}, {'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '829419763', 'price': 91.0, 'ruleTypeId': 29, 'longDescription': 'Taxes Obligatoires ', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': 'Taxes Obligatoires 91 eur', 'id': 829419763, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}], 'priceModifierType': {'id': 4, 'description': 'Adult price'}, 'brochurePrice': {'productPrice': 0.0}, 'finalPriceWithSupplements': {'productPrice': 224.0}, 'allInclusivePrice': {'productPrice': 319.0}, 'allInclusiveBrochurePrice': {'productPrice': 0.0}}, 'person': {'passengerType': {'passengerTypeId': 1, 'passengerTypeName': 'Adult'}}, 'quantity': 2}], 'quantity': 1}], 'allInclusivePrice': 319.0}, 'departureArrivalDate': '20111127T00:00:00', 'ticketOnDeparture': ''}}}}, 'NCE': {'depAirportName': 'Nice', 7: {'standard': {'availableDatesAvailable': 'True', 'availableItemMetaData': ['11/2011', '12/2011', '1/2012', '2/2012', '3/2012'], '27/11/2011': {'skuId': '910101940', 'returnArrivalDate': '20111204T00:00:00', 'returnDepartureDate': '20111204T00:00:00', 'AI': {'boardTypeDescription': 'Formule tout compris', 'allocatedRooms': ['2-1'], 'totalRoomAllocationPrice': 798.0, 'rooms': [{'minAdultOccupancy': 2, 'roomTypeName': 'Chambre 2 personnes', 'totalRoomPrice': {'productPrice': 798.0}, 'roomTypeId': '2', 'roomPassengers': [{'passengerPrice': {'boardTypeSupplement': {'productPrice': 0.0}, 'roomTypeSupplement': {'productPrice': 0.0}, 'finalPrice': {'productPrice': 304.0}, 'holidayOptions': [{'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '460145316', 'price': 4.0, 'ruleTypeId': 29, 'longDescription': u'Taxe de solidarit\ufffd', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': u'Taxe de solidarit\xe9 4 eur', 'id': 460145316, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}, {'priceDisplayStrings': [], 'baseOption': {'optionInternalCode': 'null', 'skuId': '829419763', 'price': 91.0, 'ruleTypeId': 29, 'longDescription': 'Taxes Obligatoires ', 'productTypeId': 24, 'externalId': 'null', 'shortDescription': 'Taxes Obligatoires 91 eur', 'id': 829419763, 'productId': '431713543'}, 'optionStyle': 'MANDATORY', 'maxQuantity': 0, 'quantity': 2}], 'priceModifierType': {'id': 4, 'description': 'Adult price'}, 'brochurePrice': {'productPrice': 0.0}, 'finalPriceWithSupplements': {'productPrice': 304.0}, 'allInclusivePrice': {'productPrice': 399.0}, 'allInclusiveBrochurePrice': {'productPrice': 0.0}}, 'person': {'passengerType': {'passengerTypeId': 1, 'passengerTypeName': 'Adult'}}, 'quantity': 2}], 'quantity': 1}], 'allInclusivePrice': 399.0}, 'departureArrivalDate': '20111127T00:00:00', 'ticketOnDeparture': ''}}}}} J'ai tenté d'utiliser la fonction json_decode_nice, et la classe TidyJSON, sans succès. Auriez-vous des pistes, ou éventuellement un script ? Merci d'avance.
  10. Je sais que pour certaines newsletter que je reçois, gmail me crée un lien spécifique automatiquement pour me désabonner (Et peut-être aussi pour la déclarer en SPAM). J'imagine que ce sont des partenariats, mais je ne sais pas du tout comment c'est fait.
  11. Ça me paraît plutôt réglo pour une police qui contient autant de caractères spéciaux. Par contre, je n'arrive pas à voir dans leur site, ni dans les conditions d'utilisation, ce que veut dire "Usage : desktop".
  12. Tu peux aussi faire une expression régulière qui cible tout , même si c'est un peu laborieux : $reg = '#^(bureautique|accessoire||tes|autres|mots)[0-9]{,2}$#'; Mais effectivement, le plus simple seraient deux champs select. Comme ça, pas de risque de faute de frappe.
  13. Il y a aussi whatthefont, plus automatique, mais il n'a réussi à rien avec cette image.
  14. Pour info, $matches[0] récupérait en fait toute la chaîne lat="44.8557549" long="-0.5782283", alors que $matches[1] donnait la valeur de latitude. C'est pour ça que tu t'étonnais de les voir attachées.
  15. Pourquoi ne pas utiliser l'API de Google Maps (Ou toute autre API similaire) ? Ça me semblerait pourtant plus indiqué.
  16. Tu vas voir, c'est pas si compliqué que ça en a l'air ! Pour continuer à apprendre, je ne saurais que te conseiller de débuter avec http://www.expreg.com/ (Même s'il est à l'abandon), puis de continuer (Dès que tu as bien appris les bases) avec http://www.lumadis.be/regex/tuto_pcre.php
  17. A moins que je ne comprenne pas ta question, il suffit de faire une requête, non ?
  18. Si tu veux continuer d'utiliser ton expression régulière, il va falloir ajouter un second jeu de parenthèses (Ce sont elles qui "capturent" les morceaux de texte que tu peux réutiliser). $reg = '/^(.+?)[.](.*)$/'; $str = "a. b"; echo(preg_replace($reg, '$1', $str)); echo(preg_replace($reg, '$2', $str)); Mais comme l'a fait remarquer BlackPage, pour séparer simplement des chaînes de caractères quand il y a un motif simple de séparation, explode() est tout indiqué. PS : echo() me semble plus approprié dans le code que print_r() : echo() est destiné à une chaîne de caractères, et print_r() à un tableau ou un objet.
  19. N'oublie pas non plus qu'il y a une grande différence entre télécharger une oeuvre, et la mettre à disposition du public.
  20. Si tu n'héberges pas toi-même le contenu, tu n'es pas receleur mais complice, ce qui est aussi puni par la loi.
  21. Un faux positif, c'est (dans ce cas) un message légitime qui a été considéré à tort comme du spam.
  22. Je n'ai jamais fait attention : tu as un lien ou une capture ?
  23. Tout réside dans le "avoir l'autorisation du graphiste", et pas que pour les renders. La première difficulté : comment retrouver le graphiste ? La seconde : le render lui appartient-il, ou appartient-il à l'entreprise (Cas le plus probable). Sinon, comme l'a déjà dit Wolf18, c'est globalement toléré, mais techniquement c'est illégal.
  24. Tu as un captcha d'installé ? Si ce n'est pas le cas, il faudrait peut-être envisager d'y passer. Après, je ne connais pas bien akismet (et pas du tout Sabre), mais s'il n'y a pas de faux positifs, n'y a-t'il pas moyen d'activer une option qui supprimerait définitivement les spams ?
  25. Personnellement, je te dirais de faire un premier test avec les valeurs 34,90 et 39,90. Si la valeur la moins chère l'emporte, tu pourras toujours faire un autre test sur ses variantes.
×
×
  • Créer...