سؤال

أحاول استبدال شيء مثل:

$text = "Hello <--name--> !!";
echo str_replace("--","?",$text);

مُتوقع:

Hello <?name?> !!

نتيجة:

Hello !!

(أنا أتحقق من الكود المصدري ، ولدي علامات مفتوحة قصيرة ممكّنة)

لقد جربت العديد من الطرق ، لكن يبدو أنه لا يمكنني الحصول على أي نتيجة <? (أو <?php) سلسلة. أعتقد أنه قد يكون مرتبطًا بـ Suhosin Patch الذي يتم تمكينه افتراضيًا في Ubuntu. قبل القيام بأي شيء آخر ، هل يعرف أحدهم كيفية العمل؟

شكرًا لك.

تحديث:

حاولت مباشرة في سطر الأوامر وعملت. نعم ، كانت المشكلة أن أي شيء بين علامات PHP لا يتم عرضه في المتصفح (Chrome) ، ولا حتى في الكود المصدري.

echo "A <"."?"."php"." echo 1 "." ?".">"." B";

في Chrome يعرض "AB" عند النظر إلى رمز المصدر. لكن Firefox يعرضها كاملة ... لذلك باختصار كان Chrome يخدعني ؛)

شكرًا لك!!!

آسف كان عليّ اختيار أفضل إجابة ... لكن بالنسبة لي كانت الإجابة 3 صحيحة.

هل كانت مفيدة؟

المحلول

هل نظرت حقًا إلى عرض المصدر للمتصفح؟ <? ?> تميل الأقسام إلى تفسيرها على أنها علامات.

إذا كنت لا تستخدم eval() في أي مكان ، لا توجد طريقة سيتم تفسير هذه العلامات بالفعل بواسطة PHP.

ربما يقوم Suhosin بتصفية هؤلاء ولكن هذا من شأنه أن يفاجئني. قد تكون قادرًا على الالتفاف عليه باستخدام

&lt; &gt;

في حين أن.

نصائح أخرى

لا علاقة له بسوهوسين.

<?name?> !! عند عرضه في صفحة HTML في !!

تحقق من مصدر الصفحة.

وأنا أتفق مع Pekka و Mike (Mike الآخر ، وليس أنا مايك) - تحتاج حقًا إلى التحقق من رمز مصدر HTML ، حيث سيظهر بشكل صحيح. إذا كنت ترغب حقًا في رؤية الرموز الأقل من وأكبر من الإخراج ، فأنت بحاجة إلى استبدال تلك بكيانات HTML (كما اقترح Pekka):

$search = array('<', '>', '--');
$replace = array('&lt;', '&gt;', '?');
$text = 'Hello <--name--> !!';
echo str_replace($search,$replace,$text);

يمكنك أيضًا استخدام HTMLSpecialChars ، مثل هذا:

$text = htmlspecialchars("Hello <--name--> !!");
echo str_replace("--","?",$text); // Hello &lt;?name?&gt; !!

سيحل HTMLSpecialChars محل:

  • & مع &
  • " مع "
  • <مع <
  • مع>

إذا كنت لا ترغب في استبدال "لسبب أو لآخر ، فمن الممكن (انظر http://se2.php.net/manual/en/function.htmlspecialchars.php). & ، <و> ، رغم ذلك ، بقدر ما أعرف دائمًا استبداله &amp;, &lt; و &gt; عند استخدام htmlspecialchars.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top