PHP - تحويل الفضاء إلى٪ 20 فقط في روابط من النص

لدي نص يحتوي على ارتباطات تشعبية ، وتحتوي بعض الارتباطات التشعبية على مسافات وأريد تحويلها إلى٪ 20.

فمثلا:

To make hyperlinks Page 1

إذا قمت بتحويل النص أعلاه باستخدام دالة rawurlencode ، فسوف تعود

<�كود> ل٪ 20make٪ 20hyperlinks٪ 20٪ 3Ca٪ 20href٪ 3D٪ 22http٪ 3A٪ 2F٪ 2Fwww.link-to-my-page.com٪ 2Fpage٪ 201.html٪ 22٪ 3EPage٪ 201٪ 3C٪ 2FA ٪ 3E </القانون>

كتبت بعد RE لتحويل الفضاء إلى٪ 20 في الوصلات فقط ولكني لست متأكداً من كيفية تطبيق space (s) * مع preg_replace.

/(http|https|ftp|ftps)(\:\/\/[a-zA-Z0-9\-\.]+)(\s)*\.[a-zA-Z]{2,4}(\/\S*)?/

أي مساعدة سيكون موضع تقدير كبير.

شكر

0
Andrew سوف ينتج نفس ما ذكرته في سؤالي.
وأضاف المؤلف Maximus, مصدر
إذا كنت تريد فقط تحويل مسافات إلى٪ 20 ، فيمكنك استخدام $ transformed = str_replace ('' ، '٪ 20' ، $ input) ؛ هل هذا ما تبحث عنه؟
وأضاف المؤلف Andrew, مصدر

2 إجابة

أسهل ما يمكنك فعله هو استخدام DOMDocument و دعه يصلح ذلك لك :

$html = 'To make hyperlinks Page 1';
$doc = new DOMDocument();
$doc->loadHTML( $html);

// Save the fixed HTML
$innerHTML = '';
foreach( $doc->getElementsByTagName('p')->item(0)->childNodes as $child) {
    $innerHTML .= $doc->saveHTML($child);
}

echo $innerHTML;

الإخراج ، شكرًا على سؤال SO هذا :

To make hyperlinks Page 1
0
وأضاف
شكرا نيك ، كان من المفيد.
وأضاف المؤلف Maximus, مصدر
لا ، لا ، انظر المثال الذي ربطته بالإضافة إلى سؤال SO. يجب أن يكون p لأن loadHTML() يقوم بإدراج حاوية HTML حول HTML غير كامل. الحلقة الكاملة موجودة للتخلص من HTML الزائد.
وأضاف المؤلف nickb, مصدر
لا يسمح لي بتعديل مشاركتك. لكن أعتقد أنك محق يجب أن يكون هذا في الواقع getElementsByTagName ('a') وليس p.
وأضاف المؤلف hsanders, مصدر

The right answer here isn't a regexp. It's urlencode() http://php.net/manual/en/function.urlencode.php

0
وأضاف
يضيف + في النص. أعتقد أنjason لا يريد إلا أن يربط الروابط داخل كتلة نصية.
وأضاف المؤلف sachleen, مصدر
ثم يريد اكتشاف عناوين URL باستخدام تعبير عادي ، ثم تغذية كل التطابقات إلى urlencode ().
وأضاف المؤلف hsanders, مصدر
أقوم بإعادة قراءة هذا السؤال ، وأعتقد أنه ينبغي أن يستخدم في الواقع DOMDocument مثلnickb يقترح. أعتقد أنه كان يتحدث عن ارتداد عناوين URL إلى علامة "a" بدلاً من تحليل مستند HTML وإصلاحه. على الرغم من أنه لا يزال غير واضح بعض الشيء ، ولكن أنا "يميل نحو الأخير.
وأضاف المؤلف hsanders, مصدر