سؤال

أقوم بإنشاء خريطة موقع باستخدام Object Pascal وأحتاج إلى وظيفة جيدة أو lib لمحاكاة ملف parse_url وظيفة على PHP.

هل يعرف أحد أي شيء جيد؟

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

المحلول

يحتوي Freepascal على وحدة URIParser مع وظيفة ParseURI.يمكن العثور على مثال لكيفية استخدامه في أحد الأمثلة الموجودة في مصدر فريباسكال.أو المثال القديم وهو أسهل إلى حد ما للفهم.

نصائح أخرى

لست على دراية بوظيفة parse_url في PHP، ولكن يمكنك تجربة TIdURI الطبقة التي تم تضمينها مع إندي (والذي بدوره تم تضمينه مع أحدث إصدارات دلفي).أعتقد أنهم نقلوه إلى FreePascal أيضًا.

TIdURI هو أحد سلالات TObject التي تحتوي على معرف الموارد العالمي، كما هو موضح في وثيقة معايير الإنترنت:

RFC 1630 - معرفات الموارد العالمية في WWW

يوفر TIdURI أساليب وخصائص لتجميع وتفكيك معرفات URI باستخدام الأجزاء المكونة التي تشكل معرف URI، بما في ذلك:البروتوكول والمضيف والمنفذ والمسار والمستند والإشارة المرجعية.

إذا لم ينجح ذلك، يرجى تقديم مثال محدد لما تحاول تحقيقه - ما الذي تحاول تحليله من عنوان URL.

كن حذرًا مع فصل Indy's TIdURI.كان من المفترض أن يكون محللًا للأغراض العامة، لكنه يحتوي على بعض الأخطاء وعيوب التصميم التي تمنعه ​​من أن يكون محللًا متوافقًا تمامًا.أنا حاليًا بصدد كتابة فصل دراسي جديد من الصفر لـ Indy 11 ليحل محل TIdURI.سيكون محلل URI متوافقًا تمامًا، وسيدعم أيضًا تحليل IRI (RFC 3987).

إذا كنت تستخدم wininet.dll، فيمكنك أيضًا استخدام ملفات InternetCrackUrl واجهة برمجة التطبيقات.

ال أوري RFC يسرد هذا التعبير العادي لتحليل URI:

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9

حيث أرقام هذه المجموعات:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related

بالنسبة لمعرف الموارد المنتظم (URI) هذا:

  http://www.ics.uci.edu/pub/ietf/uri/#Related

التعبير العادي بسيط جدًا ولا يستخدم أي ميزات خاصة يجب أن يوفرها التعبير العادي، لذا احصل على تعبير متوافق مع تطبيق باسكال الخاص بك وها هو ذا.

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