سؤال

تحتاج ببساطة preg_match التي سوف تجد "ج.aspx" (بدون علامتي الاقتباس) في المحتوى إذا كان يرى أنه سيعود كل عنوان url.كما على سبيل المثال

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a><br/>';

الآن يجب أن preg_match "ج.aspx" من المحتوى سوف تعطي الانتاج كما

"/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212"

دولار المحتوى يجب أن يكون أكثر الروابط ما عدا "ج.aspx".أنا لا أريد لهم.أنا فقط أريد من كل عنوان على أن يكون "ج.aspx".

واسمحوا لي أن أعرف كيف يمكن أن تفعل ذلك.

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

المحلول

يمكنك استخدام DOM لتحليل HTML، وليس Regex. يمكنك استخدام Regex لتحليل قيمة السمة على الرغم من ذلك.

تحرير: مثال محدث حتى يتحقق من c.aspx.

$content = '<div>[4]<a href="/m/c.aspx?mt=01_9310ba801f1255e02e411d8a7ed53ef95235165ee4fb0226f9644d439c11039f%7c8acc31aea5ad3998&amp;n=783622212">New message</a>

<a href="#bar">foo</a>

<br/>';

$dom = new DOMDocument();
$dom->loadHTML($content);

$anchors = $dom->getElementsByTagName('a');

if ( count($anchors->length) > 0 ) {
    foreach ( $anchors as $anchor ) {
        if ( $anchor->hasAttribute('href') ) {
            $link = $anchor->getAttribute('href');
            if ( strpos( $link, 'c.aspx') ) {
                echo $link;
            }
        }
    }
}

نصائح أخرى

إذا كنت ترغب في العثور على أي سلسلة مقتبسة مع ج.aspx في ذلك:

/"[^"]*c\.aspx[^"]*"|'[^']*c\.aspx[^']*'/

ولكن في الحقيقة ، من أجل تحليل أكثر HTML ستكون أفضل حالا مع بعض نوع من DOM محلل بحيث يمكنك أن تكون متأكدا من ما كنت مطابقة حقا ل href.

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