PDA

View Full Version : سوال: اخطار در rss feeds



ravand
سه شنبه 19 اسفند 1393, 16:22 عصر
سلام
من برخی مواقع که مطلبی رو در سایتم ارسال میکنم بعد از مدتی میبینم که rss feeds سایتم خراب شده و وقتی بازش میکنم بهم اخطار میده و می فهمم اشکال از برخی کاراکترها هست که وارد دیتابیس شده و وقتی اون کاراکتر را حذف میکنم مشکل حل میشه.
من از برخی توابع مثل تابع زیر:

htmlentities($matlab, ENT_QUOTES, "UTF-8");
و توابع دیگه استفاده کردم ولی فقط برای برخی کاراکتر ها کار میکنن. موندم برای حل این مشکل چیکار کنم؟ کسی تا حالا این مشکل براش پیش نیمدهَ؟
همینو میدونم که باید از یه تابع قبل از ارسال مطلب به دیتابیس استفاده کنم ولی نمیدونم چه تابعی؟

Unique
سه شنبه 19 اسفند 1393, 18:32 عصر
htmlentities مربوط به html میشه و برای xml باید شما موارد را xml-safe کنید.
من از xmlentities توی فایلی که attach کردم توی خیلی از پروژه هام استفاده کردم و مشکلی نداشتم.

ravand
چهارشنبه 20 اسفند 1393, 10:53 صبح
ببخشید من این برنامه رو تست کردم کار نکرد نمیدونم شاید جایی دارم اشتباه میکنم لطفا اگه میشه طریقه ی استفاده اش رو بگید.

Unique
چهارشنبه 20 اسفند 1393, 20:07 عصر
همونطور که پیام خصوصی دادم توی این فایل چند تا تابع هست که با هم کار میکنند و امیدوارم فقط تابع htmlentities را کپی نکرد هباشین و کل فایل را include کرده باشین. راستش من خیلی از پروژّ هام مبتنی بر این هست و واقعا مشکلی باهاش نداشتم. خروجیتون چه مشکلی داره ؟ اگه میشه همینجا بحث را ادامه بدین که دوستان هم استفاده کنند.

ravand
پنج شنبه 21 اسفند 1393, 07:01 صبح
شاید دلیلش اینه که من از کدنویسی دیگران سر در نمیارم.:لبخند: فقط از کدنویسی خودم سر در میارم.
اینو منظورتون بود؟

<form action="test.php" method="post">
<input type="text" name="ma">
<input type="submit" value="ارسال">
</form>
<?php
if(isset($_POST['ma'])){
include("xmlentities.php");
xmlentities($_POST['ma']);
}
?>

Weblove
پنج شنبه 21 اسفند 1393, 07:52 صبح
شاید اگه text رو بگذاری مشکل مشخص بشه !

ravand
پنج شنبه 21 اسفند 1393, 09:20 صبح
شاید اگه text رو بگذاری مشکل مشخص بشه !
متوجه منظورتون نمیشم.

Weblove
پنج شنبه 21 اسفند 1393, 12:23 عصر
همون متنی که ارسال می کنید توی کد بالا

$_POST['ma']

Unique
پنج شنبه 21 اسفند 1393, 14:15 عصر
منظورشون اینه که خود text را بگذارین تا بشه مشکل را بررسی کرد.
دو تا راه حل دیگه هم به نظرم میرسه :

یکی اینکه بگذارین خود xml براتون escape و تبدیل و غیره را انجام بده :


$dom = new DOMDocument;
$element = $dom->createElement('Element');
$element->appendChild($dom->createTextNode('I am text with Ünicödé & HTML €ntities ©'));
$dom->encoding = 'utf-8';
$dom->appendChild($element);
echo $dom->saveXml();

یکی هم اینکه متنتون را بگذراید توی CDATA که اهمیتی نداره دیگه چی باشه.