j'ai un texte que je suis analyse comme ceci:PHP et preg_replace
texte. Du texte. Du texte. Certains texte . Du texte. Du texte. Du texte. Du texte. Du texte. Du texte. Certains texte . Du texte. Du texte. Du texte. Du texte. Du texte. Du texte. [attachment = 0] Winter.jpg [/ pièce jointe] Certains texte. Du texte. Du texte. Du texte. Du texte. Du texte. Du texte. Certains texte . Du texte. Du texte. Du texte. Du texte.
Je veux correspondre et supprimer toute instance de texte comme celui-ci de la chaîne:
[attachment=0]Winter.jpg[/attachment]
où winter.jpg peut être un texte.
Cependant, je reçois des notifications PHP. Je regexpal.com pour construire ce qui fonctionne, mais il utilise une fonction REGEX Javascript:
\[attachment=.*?].*\[/attachment]
Quand je lance ce code:
$pm_row['message_text'] = preg_replace('\[attachment=.*?\].*\[/attachment\]', '', $pm_row['message_text']);
PHP se plaint d'un avis:
[phpBB Debug] PHP Notice: in file /mail_digests.php on line 841: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash
Donc sur une ligne similaire de code, je délimite le motif avec un "/":
$post_row['post_text'] = preg_replace('/\[attachment=.*?].*\[/attachment]/', '', $post_row['post_text']);
Mais cela génère:
[phpBB Debug] PHP Notice: in file /mail_digests.php on line 957: preg_replace() [function.preg-replace]: Unknown modifier 'a'
Toutes les idées sur la façon de résoudre ce problème?
+1 Oui, c'est le problème.L'OP devra également rendre le fichier.. '' Ungreedy ('. *?') S'il y a plus d'une pièce jointe dans le texte analysé. – lonesomeday
Merci. Les expressions régulières sont un défi! – Mark
OK, apparemment mon expression a besoin d'un peu de raffinement. Comment j'ai: \t \t \t $ pm_row ['message_text'] = preg_replace ('/ \ [pièce jointe =. *?]. *? \ [\/Pièce jointe] /', '', $ pm_row ['message_text']) ; mais il ne correspond pas à ma chaîne de winter.jpg – Mark