php
  • regex
  • preg-replace
  • 2017-10-01 1 views -1 likes 
    -1
    $input_lines = 'this photos {img='3512.jpg', alt='Title'} and {#img='3513.jpg', alt='Title2'} any image code here related to image must be replaced.'; 
    echo preg_replace("/({\w+)/", "<img src='https://imgs.domain.com/images/$1' alt='$2'/>", $input_lines); 
    

    code Regex:lien spécifique dans la phrase

    /({\w+)/

    liens d'image:

    {img='3512.jpg', alt='Title'} et {img='3513.jpg', alt='Title2'} dans la phrase.

    Conversion:

    this photos <img src='https://imgs.domain.com/images/3512.jpg' alt='Title'/> et <img src='https://imgs.domain.com/images/3513.jpg' alt='Title2'/> any image code here related to image must be replaced.

    Je reçois les liens d'image dans la phrase, mais ce qui ne va pas avec le code Regex?

    +0

    Vous ne disposez que d'un groupe de capture dans le modèle. –

    +0

    Voir https://ideone.com/vJHTsm –

    +1

    @ WiktorStribiżew Je pense que vous avez donné le downown mais vous avez répondu en même temps. Merci pour votre réponse. Si vous le souhaitez, nous pouvons écrire la réponse.Je veux marquer votre réponse correctement –

    Répondre

    0

    Votre motif ({\w+) ne correspond et ne capture dans le groupe 1 qu'un { et un ou plusieurs caractères après l'accolade ouverte. Dans votre modèle de remplacement, il y a des références arrières de remplacement $1 et $2 qui ne peuvent tout simplement pas fonctionner car vous n'avez qu'un seul groupe de capture.

    Vous pouvez utiliser

    $re = "/{#\w+='([^']*)'\s*,\s*\w+='([^']*)'}/"; 
    $str = "this photos {#img='3512.jpg', alt='Title'} and {#img='3513.jpg', alt='Title2'} any image code here related to image must be replaced."; 
    $subst = "<img src='https://imgs.domain.com/images/\$1' alt='\$2'/>"; 
    echo preg_replace($re, $subst, $str); 
    

    Voir PHP demo, sortie

    this photos <img src='https://imgs.domain.com/images/3512.jpg' alt='Title'/> and <img src='https://imgs.domain.com/images/3513.jpg' alt='Title2'/> any image code here related to image must be replaced.

    Voir la regex demo.

    Détails

    • {# - une sous-chaîne {#
    • \w+ - 1 ou plusieurs lettres, des chiffres ou/et _
    • =' - un =' sous-chaîne littérale
    • ([^']*) - Groupe 1: 0+ caractères autres que '
    • ' - un '
    • \s*,\s* - une virgule fermée avec 0+
    • espaces blancs \w+= - 1 ou plusieurs lettres, des chiffres ou/et _ et un ='
    • ' - un '
    • ([^']*) - Groupe 2 : tous les caractères 0+ autres que '
    • '} - une chaîne '}.

     Questions connexes

    • Aucun problème connexe^_^