Salut, je suis nouveau sur php et j'ai besoin d'un peu d'aide

J'ai besoin de changer le texte entre ** dans la chaîne php et de le mettre entre la balise html


$text = "this is an *example*";

Mais je ne sais vraiment pas comment et j'ai besoin d'aide

php
0
saif 17 janv. 2017 à 00:28

2 réponses

Meilleure réponse

Personnellement, j'utiliserais exploser, vous pouvez ensuite reconstituer la phrase si l ' exemple apparaît au milieu d'une phrase

<?php
$text = "this is an *example*";
$pieces = explode("*", $text);
echo $pieces[0];
?>

Éditer:

Puisque vous recherchez ce qui équivaut essentiellement à un code BB personnalisé, utilisez ceci

$text = "this is an *example*";
$find = '~[\*](.*?)[\*]~s';
$replace = '<span style="color: green">$1</span>';
echo preg_replace($find,$replace,$text);

Vous pouvez l'ajouter à une fonction et lui faire analyser tout texte qui lui est passé, vous pouvez également transformer les variables de recherche et de remplacement en tableaux et y ajouter plus de codes

2
Peter Waters 16 janv. 2017 à 22:51

Vous devriez vraiment utiliser un analyseur DOM pour des choses comme celle-ci, mais si vous pouvez garantir que ce sera toujours le caractère *, vous pouvez utiliser une expression régulière:

$text = "this is an *example*";
$regex = '/(?<=\*)(.*?)(?=\*)/';
$replacement = 'ostrich';
$new_text = preg_replace($regex, $replacement, $text);
echo $new_text;

Retour

this is an *ostrich*

Voici comment fonctionne l'expression régulière:

Positive Lookbehind (?<=\*)
    \* matches the character * literally (case sensitive)

1st Capturing Group (.*?)
    .*? matches any character (except for line terminators)
     *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)

Positive Lookahead (?=\*)
    \* matches the character * literally (case sensitive)

Cette expression régulière commence et finit essentiellement par regarder ce qui est devant et derrière le caractère de recherche que vous avez spécifié et laisse ces caractères intacts pendant le remplacement par preg_replace().

3
Jay Blanchard 16 janv. 2017 à 21:41