הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה עם ביטוי רוגלי (https://hosts.co.il/forums/showthread.php?t=73453)

ViPeRt 10-04-09 17:53

בעיה עם ביטוי רוגלי
 
יש לי תוכן של דף לדוגמא:

HTML קוד:

<font color=\"#008003\">test</font>
<font color=\"#008003\">test</font>
<font color=\"#008003\">test</font>
<font color=\"#008003\">test</font>
<font color=\"#FF0003\">test</font>
<font color=\"#FF0003\">test</font>
<font color=\"#FF0003\">test</font>
<font color=\"#FF0003\">test</font>

אני רוצה להוציא רק מה שצבע הפונט שלו הוא #008003
בגלל שיש \" אני לא מצליח הכי קרוב שהצלחתי זה להוציא את כל הצבעים עם:
PHP קוד:

preg_match_all("#<font[>]*(.+?)</font>#i"$contents$matches); 

תודה לעוזרים

daMn 10-04-09 17:58

PHP קוד:

$string "<font color=\"#008003\">test</font>";
preg_match_all("#^<font\scolor\=\\\"(.*?)\\\">#i"$string$matches); 
print_r($matches[1]); 


vadimg88 10-04-09 17:58

נסה את זה:

PHP קוד:

#<font color=\\"(.*)\\">(.*)</font>#i 


DvirCohen 10-04-09 18:04

פשוט תעשה "\\\
\\ = \
"\ = "

ViPeRt 10-04-09 18:07

שלוש \\\ לא עובד...

גם שאר הקודים שהביאו פה לא עובדים

DvirCohen 10-04-09 18:42

PHP קוד:

$string "
<font color=\"#008003\">1</font>
<font color=\"#008003\">1</font>
<font color=\"#008003\">1</font>
<font color=\"#008003\">1</font>
<font color=\"#FF0003\">2</font>
<font color=\"#FF0003\">2</font>
<font color=\"#FF0003\">2</font>
<font color=\"#FF0003\">2</font>"
;

preg_match_all('/<font color=\"#008003\">(.+?)<\/font>/'$string$matches);

print_r($matches);
/*
Array
(
    לזה אל תתייחס כי זה תופס את כל הביטוי, בעצם זה אמור להיות 1 בצבע ירוק פה
    [0] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 1
            [3] => 1
        )

    [1] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 1
            [3] => 1
        )

)
*/ 


daMn 10-04-09 20:28

הקוד שלי אתה מוזמן לבדוק, תריץ את הקוד בדף נפרד שלא תלוי בסקריפט שלך כי אני לא יודע מה עשית בסקריפט שלך ואולי יש בעיה במשהו אחר אצלך.

psycho 11-04-09 10:28

Regexbuddy
פותר את כל הבעיות, תאמין לי

intercooler3819 11-04-09 11:54

PHP קוד:

<?php
$str 
"<font color=\"#008003\">1</font>";
preg_match_all("|<font[^>]+color=\\\"#008003\\\"[^>]*>(.+)</font>|Uis"$str$matches);
var_dump($matches);

לא ניסיתי זה אמור לעבוד..
וזה בהנחה שיש בין תגי הפונט משהו, אם אין תחליף את ה+ באמצע ב *

תתפנק


עריכה
חח הסלאש שיש לו זה להברחה
הסטרינג שאתם בודקים הוא בלי סלאש..
בכל אופן אם הסטרינג המקורי בלי סלאש וזה סלאש להברחה אז תשתמש בזה
PHP קוד:

<?php
$str 
"<font color=\"#008003\">1</font>";
preg_match_all("|<font[^>]+color=\"#008003\"[^>]*>(.+)</font>|Uis"$str$matches);
var_dump($matches);

ואם זה לא להברחה תשתמש בזה
PHP קוד:

<?php
$str 
"<font color=\"#008003\">1</font>";
preg_match_all("|<font[^>]+color=\\\"#008003\\\"[^>]*>(.+)</font>|Uis"$str$matches);
var_dump($matches);


DvirCohen 11-04-09 18:16

מה שנתתי לך עובד, כמשתמשים ב' ולא ב" זה לא נחשב כתו מיוחד, ולכן "\ נחשב פשוט "\ ולא "


כל הזמנים הם GMT +2. הזמן כעת הוא 21:17.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ