استبدل multifyte utf8 حرف في php

أحاول وضع preg_replace لـ multibytecharacter for euro in UTF (كما هو موضح في html) إلى "$" و * لـ "@"

$orig = "2 **** reviews  ⬠19,99 price";
$orig = mb_ereg_replace(mb_convert_encoding('€', 'UTF-8', 'HTML-ENTITIES'), "$", $orig);
$orig = preg_replace("/[\$\;\?\!\{\}\(\)\[\]\/\*\>\<]/", "@", $orig);
$a = htmlentities($orig);
$b = html_entity_decode($a);

يتم استبدال "*" ولكن ليس "â¬" .......

كما حاول استبدالها

$orig = preg_replace("/[\xe2\x82\xac]/", "$", $orig);

لا تحويل إما ....

خطة أخرى لم تنجح:

$orig= mb_ereg_replace(mb_convert_encoding('€', 'UTF-8', 'HTML-ENTITIES'), "$", $orig);

Brrr شخص يعرف كيفية التخلص من هذا اليورو حرف UF8:

echo html_entity_decode('€');

(يقودني المكسرات)

0
من $ orig = str_replace (html_entity_decode ('& euro؛') ، '$' ، $ orig) ؛ أحصل على خطأ: "خطأ في بناء الجملة ، غير متوقع" ، ""
وأضاف المؤلف Mark Boos, مصدر
لول ، نظرت إلى هذا طويلا لدرجة أنني اشتقت تماما كان خط آخر .... لذلك يعمل! شئ واحد؛ لماذا لا يمكنني الحصول على هذا للعمل مع preg_replace ..؟ شكرا جزيلا راجع للشغل!
وأضاف المؤلف Mark Boos, مصدر
ألن يعمل str_replace (html_entity_decode ('& euro؛') ، '$' ، $ source)؟
وأضاف المؤلف Mathieu Dumoulin, مصدر
يجب أن يكون خطأ بناء الجملة الخاص بك من مكان آخر ، وأنا فقط asted الرمز على الخادم الخاص بي ويعمل بشكل جيد ، لا يوجد خطأ في بناء الجملة ... أنت متأكد من أنك قمت بنسخ الأشياء كما هو؟
وأضاف المؤلف Mathieu Dumoulin, مصدر
لا أعرف ، أنا فقط أقوم بعمل تعبير أساسي ، ربما يمكن لشخص آخر مساعدتك في ذلك الجزء
وأضاف المؤلف Mathieu Dumoulin, مصدر

3 إجابة

لصق تعليقي هنا كإجابة حتى تتمكن من وضع علامة عليه!

لن

str_replace(html_entity_decode('€'), '$', $source)

عمل؟

0
وأضاف

يمكن أن يكون سبب ذلك سببين:

  1. The actual source text is UTF8 encoded, but your PHP code not. You can solve this by just using this line and save your file UTF8 encoded (try using notepad++).

    str_replace('€', '$', $source);

  2. The source text is corrupted: multibyte characters are converted to latin1 (wrong database charset?). You can try to convert them back to latin1:

    str_replace('€', '$', utf8_decode($source))

0
وأضاف

في سلسلة $ orig ليس لديك علامة اليورو. عندما أقوم بتشغيل ملف PHP هذا:

<?php
$orig = "â¬";
for($i=0; $i

راجع للشغل إذا تم عرض ملف UTF-8 الذي يحتوي على € على أنه latin-1 يجب أن تحصل على: € وليس ⬠كما في المثال الخاص بك.

لذلك في الواقع ، لديك مشاكل في الترميز والتحويل بين الترميزات. إذا حاولت حفظ € في latin1 فسيفقد الحرف الأوسط (على سبيل المثال سوف تنبهني Komodo ثم تستبدل بـ ؟ ). وبعبارة أخرى ، لقد ألحقت الضرر بعلامة € الخاصة بك بطريقة أو بأخرى - ثم حاولت استبدالها لأنها كانت مكتملة. :د

0
وأضاف